このような意味ですか?
public static void main(String[] args) {
final Set<String> nounPhrases = new HashSet<>();
nounPhrases.add("java");
nounPhrases.add("jsp");
nounPhrases.add("book");
final Set<String> nounPhrases2 = new HashSet<>();
nounPhrases2.add("web");
nounPhrases2.add("php");
nounPhrases2.add("java");
nounPhrases2.add("book");
// Checking for every element in first set
for (final String element : nounPhrases) {
// if second set has the current element
if (nounPhrases2.contains(element)) {
System.out.println("They have " + element);
}
}
}
マイ出力:
They have java
They have book
編集:あなたは、両方のセットに共通の要素を入手するには、値を格納し、それらを返すようにしたい場合、私は、正しく理解していれば 、あなたのコメントに基づいて:
public static void main(String[] args) {
final Set<String> nounPhrases = new HashSet<>();
nounPhrases.add("java");
nounPhrases.add("jsp");
nounPhrases.add("book");
final Set<String> nounPhrases2 = new HashSet<>();
nounPhrases2.add("web");
nounPhrases2.add("php");
nounPhrases2.add("java");
nounPhrases2.add("book");
System.out.println(getCommon(nounPhrases, nounPhrases2));
}
public final static Set<String> getCommon(Set<String> setA, Set<String> setB) {
final Set<String> result = new HashSet<>();
for (final String element : setA) {
if (setB.contains(element)) {
result.add(element);
}
}
return result;
}
あなたは、文字列以外の要素のための方法を動作させるためにジェネリック医薬品を使用することができます。
public final static <T> Set<T> getCommon(Set<T> setA, Set<T> setB) {
final Set<T> result = new HashSet<>();
for (final T element : setA) {
if (setB.contains(element)) {
result.add(element);
}
}
return result;
}
パフォーマンスが重要な場合は、最初にサイズを確認し、小さいセットの要素に対してのみ繰り返します。 1つの要素で1つのセットがあり、100で1つのセットがある場合は、小さなものから順に1つの反復で得られますが、大きいもので始めると100のチェックが残ります。
あなたは何の結果:あなたは、両方の「等しい」ことがnullの2つの設定変数、その後、使用したい場合は
:
Set#equals()
は、あなたが期待する方法でセットを比較します欲しいです? – Sweeper「比較」を定義します。交差点を探していますか?または、両方のセットがまったく同じ要素を持つようにしますか?また、これまでに何を試しましたか? – Sudicode
'seta.equals(setb)'の何が問題なのですか? – laune