我有一个哈希图:
Map<LotWaferBean, File> hm = new HashMap<LotWaferBean, File>();
LotWaferBean lw = new LotWaferBean();
... //populate lw
if (!hm.containsKey((LotWaferBean) lw)) {
hm.put(lw, triggerFiles[l]);
}
LotWaferBean
的代码:@Override
public boolean equals(Object o) {
if (!(o instanceof LotWaferBean)) {
return false;
}
if (((LotWaferBean) o).getLotId().equals(lotId)
&& ((LotWaferBean) o).getWaferNo() == waferNo) {
return true;
}
return false;
}
在我的IDE中,我将断点放在
equals()
中,但从未执行过。为什么? 最佳答案
尝试在hashCode()中放置一个断点。
如果映射中两个对象的hashCode()返回相同的数字,则将调用equals以确定它们是否真正相等。
关于java - Java HashMap.containsKey()不调用equals(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4611764/