当我遇到以下问题时,我正在复习 Oracle 的 Java 认证实践考试之一:
鉴于:
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());
结果是什么?
A2
乙) 3
C) 4
D) 编译失败
我的猜测是B,因为m1和m3对他们平等由于key引用是相同的。令我惊讶的是,答案实际上是 C。是否put()做了一些我遗漏的事情?为什么不"plane"换"car"?谢谢!
PIPIONE
相关分类