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


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

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

 

代碼示例:

 

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

 

 

執行的結果:

 

str1:1179395 | str2:1179395

 

false

 

代碼解讀:很顯然“通話”和“重地”的 hashCode() 相同,然而 equals() 卻為 false

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM