java - 创建可用作 HashMap 键的 Java 类

标签 java hashmap

我创建了一个名为 Coordinates 的类,它只包含一些 xy 整数。我想将其用作 HashMap 的键。

但是,我注意到当您使用相同的 xy 值创建两个不同的 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/

相关文章:

java - 声明一个队列/哈希集

java - 使用 Optional 验证输入

java - 删除hibernate实体而不(尝试)删除关联表( View )条目

java - 热点JIT优化和 "de-optimization": how to force FASTEST?

hashmap - React.js key 生成

java - "update"HashMap 中的条目的有效方法?

java - 如何使用Adobe Reader Mobile SDK 9开发pdf/epub阅读器?

java - 如何修复 java 中不需要的新行?

java - 哪个哈希码 HashMap 实现用于值检索

android - 在 Bundle 中插入 ArrayList