Java使用自定义对象作为键

示例

在使用自己的对象作为键之前,必须重写对象的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哪个对象。

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