如果兩個對象具有相同的哈希碼,但是不相等的,它們可以在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重要么? |