如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗?
----答案是 可以
原因:
在hashmap中,由于key是不可以重复的,他在判断key是不是重复的时候就判断了hashcode这个方法,而且也用到了equals方法。
这里不可以重复是说equals和hashcode只要有一个不等就可以了。
例子:
TestObject t1= new TestObject();
t1.A=1;
TestObject t2= new TestObject();
t1.A=2;
Map map= new HashMap();
@Override
public int hashCode() {
return 5;
}
public int hashCode() {
return 5;
}
map.put(t1, "A");
map.put(t2,"B");
System.out.println(map.get(t1));
System.out.println(map.get(t2));
----A
B
一、当我们向一个set、HashMap、HashSet、HashTable集合中添加某个元素,集合会首先调用该对象的hashCode方法, 这样就可以直接定位它所存储的位置,若该处没有其他元素,则直接保存。 二、hashCode重要么? |