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哪个对象。
如果没有这些方法,则对象引用将用于上述比较,除非每次都使用相同的对象引用,否则将无法正常工作。