2つの集合の交差を計算するにはどうすればいいですか? [重複] 質問する

2つの集合の交差を計算するにはどうすればいいですか? [重複] 質問する

重複の可能性あり:
可変数の文字列セットの交差を効率的に見つける

たとえば、2 つのハッシュセットがある場合、それらの交差をどのように計算するのでしょうか?

Set<String> s1 = new HashSet<String>();

Set<String> s2 = new HashSet<String>();

S1 INT S2 ?

ベストアンサー1

使用retainAll()方法Set:

Set<String> s1;
Set<String> s2;
s1.retainAll(s2); // s1 now contains only elements in both sets

セットを保存する場合は、交差を保持する新しいセットを作成します。

Set<String> intersection = new HashSet<String>(s1); // use the copy constructor
intersection.retainAll(s2);

javadocretainAll()まさにあなたが望んでいることだと言っている:

指定されたコレクションに含まれる要素のみをこのセットに保持します (オプションの操作)。つまり、指定されたコレクションに含まれていないすべての要素をこのセットから削除します。指定されたコレクションもセットである場合、この操作により、このセットの値が 2 つのセットの交差になるように、このセットが効果的に変更されます。

おすすめ記事