使用自定义对象作为键
在使用自己的对象作为键之前,必须覆盖对象的 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
将决定该哈希桶中的哪个对象。
如果没有这些方法,你的对象的引用将用于上述比较,除非你每次都使用相同的对象引用,否则它将无效。