2つのハッシュセットがあり、両方とも「名前」(オブジェクト)がx個入っています。私「名前」 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)) {'
が発生したことはありません原因、まったくの出力を得ませんでした。しかし、私が出力として得たいものはJonとHelenです。彼らはに属していないので、名前2です。あなたはName
クラスでオーバーライドequals
とhashCode
メソッドを持っていると仮定すると
あなたを削除してください!演算子を使用して共通名を計算します。 – algojava
あなたの 'Name'クラスの' equals'メソッドと 'hashCode'メソッドは、簡潔さのために削除されましたか、本当に欠けていますか? –
'equals'メソッドと' hashCode'メソッドを 'Object'クラスとなるスーパークラスからオーバーライドする必要があります –