web-dev-qa-db-ja.com

2つの集合の交点を計算する方法

重複している可能性があります:
可変数の文字列セットの交差部分を効率的に見つける

たとえば、2つのハッシュセットがあり、それらの交点を計算する方法は?

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

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

S1 INT S2 ?
175
user496949

SetretainAll() メソッドを使用してください。

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);

retainAll()javadoc はそれがまさにあなたが望むものであると言います:

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

350
Bohemian

はいretainAllチェックアウトがあります this

Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);
40
Emmanuel N