為什么重寫equals時必須重寫hashCode方法


    兩個對象相等,對兩個對象分別調用equals方法都返回true,如果兩個對象相等,則hashcode一定也是相同的,假如只重寫equals而不重寫hashcode,那么hashcode方法就是Object默認的hashcode方法,由於默認的hashcode方法是根據對象的內存地址經哈希算法得來的,兩者的hashcode不一定相等。

在java的集合中,判斷兩個對象是否相等的規則是:
         1.判斷兩個對象的hashCode是否相等

             如果不相等,認為兩個對象也不相等,完畢,所以如果hashcode()沒有被重寫,在set和map中兩個相等對象的key就會判斷為不相等
             如果相等,轉入2

         2.判斷兩個對象用equals運算是否相等
            如果不相等,認為兩個對象也不相等
            如果相等,認為兩個對象相等(equals()是判斷兩個對象是否相等的關鍵)

 


免責聲明!

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



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