使用自定义对象作为键

在使用自己的对象作为键之前,必须覆盖对象的 hashCode() 和 equals()方法。

在简单的情况下,你会有类似的东西:

class MyKey {
    private String name;
    MyKey(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object obj) {            
        if(obj instanceof MyKey) {
            return this.name.equals(((MyKey)obj).name);
        }
        return false;
    }
    
    @Override
    public int hashCode() {
        return this.name.hashCode();
    }
}

hashCode 将决定密钥属于哪个哈希桶,equals 将决定该哈希桶中的哪个对象。

如果没有这些方法,你的对象的引用将用于上述比较,除非你每次都使用相同的对象引用,否则它将无效。