Я полагаю, что ОП запрашивает исключительную дизъюнкцию между двумя списками?
( Примечание: Ни одно из предыдущих решений не обрабатывает дубликаты!)
Если вы хотите написать код самостоятельно в Groovy, выполните следующие действия:
def a = ['a','b','c','c','c'] // diff is [b, c, c]
def b = ['a','d','c'] // diff is [d]
// for quick comparison
assert (a.sort() == b.sort()) == false
// to get the differences, remove the intersection from both
a.intersect(b).each{a.remove(it);b.remove(it)}
assert a == ['b','c','c']
assert b == ['d']
assert (a + b) == ['b','c','c','d'] // all diffs
Один гоч, использует списки / массивы целых. У вас могут возникнуть проблемы из-за полиморфного метода remove (int) vs remove (Object). См. Здесь (непроверенное) решение .
Вместо того, чтобы заново изобретать колесо, однако , вы должны просто использовать существующую библиотеку (например, commons-collections
):
@Grab('commons-collections:commons-collections:3.2.1')
import static org.apache.commons.collections.CollectionUtils.*
def a = ['a','b','c','c','c'] // diff is [b, c, c]
def b = ['a','d','c'] // diff is [d]
assert disjunction(a, b) == ['b', 'c', 'c', 'd']