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的说,它不包含的元素,尽管等于返回true
假
真正
每https://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html#contains-java.lang.Object-,HashSet的使用等来判断它是否包含一个元素。那么包含调用不应该在这里返回true吗?我错过了什么?谢谢。
你也必须重写'hashCode()'。 – Eran