public class VO {
public int hashcode()
{
return 0;
}
public boolean equals(Object obj)
{
return true;
}
public static void main(String args[])
{
VO vo1 = new VO();
VO vo2 = new VO();
Map<VO,Integer> map = new HashMap<VO, Integer>();
map.put(vo1, 1);
map.put(vo2, 1);
System.out.println(map.size());
}
}
我得到的輸出是:2Hashcode方法,等於在Java合同
但按我的知識輸出爲1
當我把一個元素在地圖它將檢查密碼的散列碼,如果該散列碼相同,則它將去檢查等於。如果兩個方法返回相同的值,則它將覆蓋以前的值。
在我的情況下這兩種方法是:(哈希碼和等於)返回0和true.So最後必須有在map.But一個元素在這裏我得到大小爲2
可能是什麼原因。感謝信...
如何添加「覆蓋」? – libik 2014-09-05 09:37:34
@libik覆蓋意味着只有一個值將在那裏終於 – PSR 2014-09-05 09:48:05