我有一个问题,其中我重写了equals方法并每次都返回false。
如果我将同一个对象两次放入hashmap中,则根据equals实现,它将返回false并且存在具有相同对象的重复条目,但是它仅覆盖现有对象。那么在与equals比较之前,它还会比较地址引用吗?
import java.util.HashMap;
import java.util.Map;
public class MapOverrideequals {
public MapOverrideequals(int anshu) {
this.anshu = anshu;
}
int anshu;
@Override
public boolean equals(Object o) {
return false;
}
public static void main(String[] args) {
Map<MapOverrideequals, String> m = new HashMap<MapOverrideequals, String>();
MapOverrideequals mm = new MapOverrideequals(1);
MapOverrideequals mm1 = new MapOverrideequals(1);
m.put(mm, "ji");
m.put(mm, "ki");
//m.put(mm1, "ansh");
for (Map.Entry<MapOverrideequals, String> m1 : m.entrySet()) {
System.out.println(m1.getKey().anshu + " " + m1.getValue());
}
}
}
产量:1 ki
最佳答案
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
它检查哈希和键引用是否相等。