class Node{
int x, y, value;
Node(int x, int y, int v) {
this.x = x;
this.y = y;
value = v;
}
@Override
public boolean equals(Object o) {
Node n = (Node)o;
boolean result = this.x == n.x && this.y == n.y && this.value == n.value;
return result;
}
}
void test() {
HashSet<Node> s = new HashSet<>();
Node n2 = new Node(1, 1, 11);
Node n1 = new Node(1, 1, 11);
s.add(n1);
System.out.println(s.contains(n2));
System.out.println(n1.equals(n2));
}
戻り等しいが、それは要素が含まれていないと言う:HashSetのは、真を返す
https://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html#contains-java.lang.Object-パー
真
偽を、HashSetのは、それが含まれているかどうかを判断するために等しく使用しています要素。したがって、contains呼び出しがtrueを返すべきではありませんか?私は何が欠けていますか?ありがとう。
あなたは 'hashCode()'もオーバーライドする必要があります。 – Eran