Я пытался реализовать метод equals и hashCode, поэтому я мог бы использовать метод remove arrayList.equals и hashCode определены, методы arrayList все еще не работают
Когда я выполнить следующее
Node a = new Node(new Coord(0,0));
System.out.println(a.equals(nodes.get(0)));
System.out.println(nodes.get(0).equals(a));
System.out.println(a.hashCode() == nodes.get(0).hashCode());
System.out.println(nodes.remove(a));
я получаю следующий результат:
true
true
true
false
Вопрос заключается в том, как может первые 3 выходного возвращения верно, когда 4-я возвращает ложь. Метод remove должен столкнуться с node.get (0) и сравнить его с a.
Это мои равенства и методы Hashcode:
public int hashCode() {
return coord.hashCode();
}
public boolean equals(Node node) {
return (node != null) && (this.hashCode() == node.hashCode());
}
, который вызывает метод coord.hashCode(), который определяется как:
public int hashCode() {
int hash = 23;
hash = 31 * hash + this.x;
hash = 31 * hash + this.y;
return hash;
}
Существует история, без вопросов. – Maroun
И включите объявление "узлы". – monkjack
Вы можете использовать @Override (> = JDK5), чтобы убедиться, что ваш определенный метод не просто перегружает родительский, но по-настоящему отменяет его. – Mik378