创建可用作hashmap键的Java类

Vol*_*ort 1 java hashmap

我已经创建了一个类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仍然使用两个实例,就好像它们是不同的键.我该怎么办?

我知道我可以使用两个元素的整数数组.但我想用这个课.

mko*_*bit 6

你需要覆盖hashCode.Java 7为此提供了一种实用方法.

@Override
public int hashCode() {
    return Objects.hash(x, y);
}
Run Code Online (Sandbox Code Playgroud)