我创建了一个名为 Coordinates
的类,它只包含一些 x
和 y
整数。我想将其用作 HashMap
的键。
但是,我注意到当您使用相同的 x
和 y
值创建两个不同的 Coordinates
实例时,它们被用作不同的 HashMap 的键。也就是说,您可以放置两个条目,即使它们具有相同的坐标。
我已经重写了 equals()
:
public boolean equals(Object obj) {
if (!(obj instanceof Coord)) {
return false;
}else if (obj == this) {
return true;
}
Coord other = (Coord)obj;
return (x == other.x && y == other.y);
}
但是 HashMap
仍然使用这两个实例,就好像它们是不同的键一样。我该怎么办?
而且我知道我可以使用包含两个元素的整数数组来代替。但是我想用这个类。
最佳答案
您需要覆盖hashCode
。 Java 7 为此提供了实用方法。
@Override
public int hashCode() {
return Objects.hash(x, y);
}
关于java - 创建可用作 HashMap 键的 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27583560/