所以你的意思是這樣的?
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個可能在兩個集合中。
什麼樣的結果你想? – Sweeper
定義「比較」。你在找交集嗎?或者兩套具有完全相同的元素?另外,你到目前爲止嘗試過什麼? – Sudicode
'seta.equals(setb)'有什麼問題? – laune