hashCode()和equals()方法的概念是兩個不相等的對象具有相同的散列碼
1)如果兩個對象是根據等於()相等,則調用每個這兩個對象的哈希碼方法應該產生相同的哈希碼。
,另一個是
2)不要求是,如果兩個對象根據等於()是不相等的,然後調用散列碼方法對每個所述兩個對象都必須產生不同的值。
我嘗試並理解第一個,這是第一點的代碼。
public class Test {
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(1, 11);
map.put(4, 11);
System.out.println(map.hashCode());
Map<Integer, Integer> map1 = new HashMap<Integer, Integer>();
map1.put(1, 11);
map1.put(4, 11);
System.out.println(map1.hashCode());
if (map.equals(map1)) {
System.out.println("equal ");
}
}
}
上述程序爲兩個不同的對象提供相同的哈希碼。
有人可以用一個例子來解釋我,根據equals()不同的兩個不同對象怎麼能有相同的散列碼。
比較的可能散列碼的數目可能'Long's或'String's的數目。 http://en.wikipedia.org/wiki/Pigeonhole_principle – SLaks 2013-05-06 14:19:29
可能的重複[在Java中==,equals和hashcode的示例](http://stackoverflow.com/questions/2731889/example-of-equals-and- hashcode-in-java) – cHao 2013-05-06 14:21:56