Подтвердить что ты не робот

Напротив пересечения в коллекциях groovy

что бы было противоположно пересечению в коллекциях groovy?

4b9b3361

Ответ 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]

Ответ 4

Я не уверен, что вы подразумеваете под "противоположностью союза", но я предполагаю, что вы имеете в виду симметричную разницу (разность или дизъюнкцию AKA). Результат этой операции показан красным цветом ниже.

enter image description here

Самый простой способ выполнить эту операцию в двух сборниках 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!