Это метод java main ():
public static void main(String[] args) {
HashSet set = new HashSet();
Mapper test = new Mapper("asd", 0);
set.add(test);
System.out.println(new Mapper("asd", 0).equals(test));
System.out.println(set.contains(new Mapper("asd", 0)));
}
и мой класс Mapper:
class Mapper {
String word;
Integer counter;
Mapper (String word, Integer counter) {
this.word = word;
this.counter = counter;
}
public boolean equals(Object o) {
if ((o instanceof Mapper) && (((Mapper)o).word == this.word)) {
return true;
}
return false;
}
}
и результат:
правда
1012 * ложь *
Из спецификаций HashSet, при этом методе я читал следующее: «Возвращает true, если этот набор содержит указанный элемент. Более формально, возвращает true, если и только если этот набор содержит такой элемент e, что (o == null? E = = null: o.equals (e)). "
Так, кто-нибудь может объяснить мне, где я не прав? Или ...?
Спасибо.