У меня есть 2 набора хэшей, содержащих x количество «Имена» (Объект). Что я хотел бы сделать, это выяснить, если мои «Имена» в Names1 или в Names2?Сравнение двух наборов 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. Поскольку они не находятся в Names2.
удалить ваш! оператора для вычисления общих имен. – algojava
Являются ли методы 'equals' и' hashCode' в вашем классе 'Name' удалены для краткости или действительно отсутствуют? –
Вам нужно переопределить метод 'equals' и' hashCode' из суперкласса, который будет классом 'Object' –