重複している可能性があります:
可変数の文字列セットの交差部分を効率的に見つける
たとえば、2つのハッシュセットがあり、それらの交点を計算する方法は?
Set<String> s1 = new HashSet<String>();
Set<String> s2 = new HashSet<String>();
S1 INT S2 ?
Set
の retainAll()
メソッドを使用してください。
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つの集合の交差になるようにします。
はいretainAll
チェックアウトがあります this
Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);