使用自定義物件作為鍵
在使用自己的物件作為鍵之前,必須覆蓋物件的 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
將決定該雜湊桶中的哪個物件。
如果沒有這些方法,你的物件的引用將用於上述比較,除非你每次都使用相同的物件引用,否則它將無效。