我有一个哈希图:

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/

10-14 12:23