这个问题在这里已经有答案了:
重写equals()方法时为什么要重写hashcode()(5个答案)
一年前关门了。
卡在测试牙上:
class MyKeys {
Integer key;
MyKeys(Integer k) {
key = k;
}
public boolean equals(Object o) {
return ((MyKeys) o).key == this.key;
}
}
以下代码片段:
Map m = new HashMap();
MyKeys m1 = new MyKeys(1);
MyKeys m2 = new MyKeys(2);
MyKeys m3 = new MyKeys(1);
MyKeys m4 = new MyKeys(new Integer(2));
m.put(m1, "car");
m.put(m2, "boat");
m.put(m3, "plane");
m.put(m4, "bus");
System.out.print(m.size());
所以,我的预期输出是“2”,而实际上是4。我想重写equals方法的正确性有问题。任何帮助都是有用的。
1条答案
按热度按时间2mbi3lxu1#
必须使用“.equals()”而不是“==”,来比较对象的键。您还需要根据需要实现hashcode()。