Wil*_*kar 24 java equals hashmap containskey
我有一个hashmap:
Map<LotWaferBean, File> hm = new HashMap<LotWaferBean, File>();
LotWaferBean lw = new LotWaferBean();
... //populate lw
if (!hm.containsKey((LotWaferBean) lw)) {
hm.put(lw, triggerFiles[l]);
}
Run Code Online (Sandbox Code Playgroud)
代码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;
}
Run Code Online (Sandbox Code Playgroud)
在我的IDE中,我将断点放入,equals()但它永远不会被执行.为什么?
Laz*_*key 41
尝试在hashCode()中放置一个断点.
如果映射中两个对象的hashCode()返回相同的数字,则将调用equals以确定它们是否真的相等.
JVM 会检查该对象的hashcode 的hashcode 桶,如果有更多具有相同hashcode 的对象,则只会执行equals() 方法。而且,开发人员应该遵循 hashCode() 和 equals() 方法之间的正确约定。
| 归档时间: |
|
| 查看次数: |
28608 次 |
| 最近记录: |