グルーヴィーなコレクションの交差の反対は何でしょうか?
@Andreと@denisの両方の回答を組み合わせたいと思うでしょう
あなたが欲しいのはユニオンだと思いますそしてこれから交差点を引きます
def a = [1,2,3,4,5]
def b = [2,3,4]
assert [1,5] == ( a + b ) - a.intersect( b )
デニスによって与えられた解決策はあなたがするかどうかに依存します
def opposite = leftCollection-rightCollection // [1,5]
または
def opposite = rightCollection-leftCollection // []
私はあなたが望んでいたとは思わない
「結合の反対」が何を意味するのかはわかりませんが、対称差(別名集合差または論理和)を意味していると思います。この操作の結果は、以下の赤で示されています。
2つのJava/Groovyコレクションでこの操作を実行する最も簡単な方法は、Apache commonsコレクションが提供する disjunction メソッドを使用することです。
これでしょうか?
def leftCollection = [1,2,3,4,5]
def rightCollection = [2,3,4]
def opposite = leftCollection-rightCollection
println opposite
プリント
[1,5]
交差点に交差を使用する
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 を参照してください。
(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)
終わり!