我有2個哈希集合,都包含x個「Names」(Object)。什麼我想要做的是找出是否在Names1或我「名稱」 Names2?比較2套Java集合
public static void main (String[] args) {
Set<Name> Names1 = new HashSet<Name>();
Names1.add(new Name("Jon"));
Names1.add(new Name("Mark"));
Names1.add(new Name("Mike"));
Names1.add(new Name("Helen"));
Set<Name> Names2 = new HashSet<Name>();
Names2.add(new Name("Mark"));
Names2.add(new Name("Mike"));
Names2.add(new Name("Sally"));
Set<Name> listCommon = new HashSet<Name>();
for (Name element : Names1) {
if (!Names2.contains(element)) {
listCommon.add(element);
}
}
for (Name element : listCommon) {
System.out.println(element.getNameString());
}
}
public class Name {
String ord;
Name(String ord1){
ord = ord1;
}
public String getNameString(){
return ord;
}
}
所以,當我跑這個代碼,我得到任何輸出,導致
'if (!Names2.contains(element)) {'
從未發生過。但我想得到的輸出將是喬恩和海倫。由於他們不在名稱2。
刪除你的!運算符來計算常用名稱。 – algojava
您的'Name'類中的'equals'和'hashCode'方法是爲了簡潔還是真正缺失而被刪除? –
你需要從超類中重寫'equals'和'hashCode'方法,這將是'Object'類 –