兩個對象的 hashCode()相同,則 equals()也必定爲 true,對嗎?

1.兩個對象的 hashCode()相同,則 equals()也必定爲 true,對嗎?

不對,兩個對象的 hashCode()相同,equals()不必定 true。spa

 

代碼示例:code

 

String str1 = "通話";
String str2 = "重地";
System.out.println(String.format("str1:%d | str2:%d", str1.hashCode(),str2.hashCode()));
System.out.println(str1.equals(str2));

 

 

執行的結果:orm

 

str1:1179395 | str2:1179395對象

 

falseblog

 

代碼解讀:很顯然「通話」和「重地」的 hashCode() 相同,然而 equals() 卻爲 falsehash

由於在散列表中,hashCode()相等即兩個鍵值對的哈希值相等,然而哈希值相等,並不必定能得出鍵值對相等。form

相關文章
相關標籤/搜索