что бы было противоположно пересечению в коллекциях groovy?
Напротив пересечения в коллекциях groovy
Ответ 1
Вероятно, вы хотите объединить оба ответа от @Andre и @denis
Я думаю, что вы хотите, это объединение, а затем вычесть пересечение из этого
def a = [1,2,3,4,5]
def b = [2,3,4]
assert [1,5] == ( a + b ) - a.intersect( b )
Решение, заданное denis, будет зависеть от того, выполняете ли вы
def opposite = leftCollection-rightCollection // [1,5]
или
def opposite = rightCollection-leftCollection // []
который я не думаю, что вы хотели
Ответ 2
Может ли это быть?
def leftCollection = [1,2,3,4,5]
def rightCollection = [2,3,4]
def opposite = leftCollection-rightCollection
println opposite
Печать
[1,5]
Ответ 3
использовать пересечение для пересечений
assert [4,5] == [1,2,3,4,5].intersect([4,5,6,7,8])
использовать + для объединений:
assert [1,2,3,4,5] == [1,2,3] + [4,5]
см. http://groovy.codehaus.org/groovy-jdk/java/util/Collection.html
Ответ 4
Я не уверен, что вы подразумеваете под "противоположностью союза", но я предполагаю, что вы имеете в виду симметричную разницу (разность или дизъюнкцию AKA). Результат этой операции показан красным цветом ниже.
Самый простой способ выполнить эту операцию в двух сборниках Java/ Groovy - использовать метод disjunction, предоставляемый сообществом Apache коллекции.
Ответ 5
(a-b)+(b-a)
// (a-b) return [1,5]
//(b-a) return []
// TOTAL = [1,5]+[]
это когда мы имеем: a=[1,2,3,4,5],b=[2,3,4,5]
ООП:
java.util.List.metaClass.oppIntersect={b->
return ((delegate-b)+(b-delegate))
}
то
a.oppIntersect(b)
END!