被卡在测试象牙上
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方法的正确性存在一些问题。任何帮助都是有用的。
答案 0 :(得分:1)
您必须使用“ .equals()”而不是“ ==”来比较对象的键。您还需要根据需要实现hashCode()。