使用自定義物件作為鍵

在使用自己的物件作為鍵之前,必須覆蓋物件的 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 將決定該雜湊桶中的哪個物件。

如果沒有這些方法,你的物件的引用將用於上述比較,除非你每次都使用相同的物件引用,否則它將無效。