質問

る場合、または、たいと思った返す新しいセットのいずれかを含む:

  1. すべての要素をそれぞれが共通し
  2. すべての要素を総合の各セット(または)
  3. すべての要素を独自のセットです。(XOR).

は簡単に既存の方法。

編集: 間違った用語ですよね。

役に立ちましたか?

解決

2セットのオブジェクトとB

と仮定すると

AND(二組の交点)

a.retainAll(b); 

OR(二組の組合)

a.addAll(b);

XOR いずれかの独自のループをロールます:

foreach item
if(a.contains(item) and !b.contains(item) ||  (!a.contains(item) and b.contains(item)))
 c.add(item)

または次の操作を行います。

c.addAll(a); 
c.addAll(b);
a.retainAll(b); //a now has the intersection of a and b
c.removeAll(a); 

セットドキュメントと、これを参照してください。 ページ。より多くの場合ます。

他のヒント

あなたは<のhref = "https://github.com/google/guava/blob/master/guava/src/com/google/common/collect/Sets.java" のrel = "nofollowをnoreferrer" を使用することができます>グーグル・コレクションは、メソッドの交差点()組合()を有し、対称差()。

クラスを設定します。
Sets.intersection(set1, set2);
Sets.union(set1, set2);

SetView view = Sets.intersection(Sets.union(set1, set2), set3);
Set result = view.copyInto(new HashSet());

@Milhousと

チェックをセットします。ご利用の場合 addAllができます。ご利用の場合 retainAllを得ることができます。あまりないと思います 知のXor.

そうでしたかの様なセット s1s2 なにができることをXOR:

  1. コピーの設定 s1s3
  2. s1.removeAll(s2); (s1現在までにすべての要素がないs2)
  3. s2.removeAll(s3); (s2現在までにすべての要素がないs3=旧s1)
  4. s1.addAll(s2); (s1現在までにeu上記のいずれかのセット)

私はジャカルタ共通コレクションAPIは、労働組合、交差点などをサポートしていることをかなり確信しています。

GoogleのコレクションAPIは、同様にしなかった場合、私は驚かれることと思います。

scroll top