@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Point point = (Point) o;
return x == point.x &&
y == point.y;
}
@Override
public int hashCode() {
return Objects.hash(x, y);
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
public static void main(String[] args) {
HashSet<Point> hashSet = new HashSet<>();
Point p1 = new Point(3, 3);
Point p2 = new Point(3, 5);
hashSet.add(p1);
hashSet.add(p2);
p2.setY(7);
hashSet.remove(p2);
System.out.println(hashSet.size());
}
你可能认为打印结果是1,但是运行后结果是2。