21

グルーヴィーなコレクションの交差の反対は何ですか?

4

5 に答える 5

30

@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 // []

私はあなたが望んでいたとは思わない

于 2011-04-19T10:10:43.233 に答える
7

「結合の反対」が何を意味するのかはわかりませんが、対称差(別名セット差または論理和)を意味していると思います。この操作の結果は、以下の赤で示されています。

ここに画像の説明を入力してください

2つのJava/Groovyコレクションでこの操作を実行する最も簡単な方法は、 Apachecommonsコレクションによって提供される論理和メソッドを使用することです。

于 2011-04-19T14:02:22.640 に答える
5

これでしょうか?

def leftCollection = [1,2,3,4,5]
def rightCollection = [2,3,4]
def opposite = leftCollection-rightCollection
println opposite

版画

[1,5]
于 2011-04-19T08:48:59.417 に答える
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を参照してください

于 2011-04-19T09:34:01.433 に答える
0
(a-b)+(b-a)
// (a-b) return [1,5]
//(b-a) return []
// TOTAL = [1,5]+[]

this is when we have: a=[1,2,3,4,5],b=[2,3,4,5]

OOP :

java.util.List.metaClass.oppIntersect={b->
  return ((delegate-b)+(b-delegate))
}

then

a.oppIntersect(b)

END!

于 2014-09-18T08:28:26.360 に答える