我已经创建了一个类Coordinates,它只包含一些x和y整数.我想用它作为一个关键HashMap.
但是,我注意到当您Coordinates使用相同x和y值创建两个不同的实例时,它们将被哈希映射用作不同的键.也就是说,即使它们都具有相同的坐标,您也可以输入两个条目.
我有覆盖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);
}
Run Code Online (Sandbox Code Playgroud)
但HashMap仍然使用两个实例,就好像它们是不同的键.我该怎么办?
我知道我可以使用两个元素的整数数组.但我想用这个课.
你需要覆盖hashCode.Java 7为此提供了一种实用方法.
@Override
public int hashCode() {
return Objects.hash(x, y);
}
Run Code Online (Sandbox Code Playgroud)