hashCode和equals方法的區別與聯系


hashCode()方法和equal()方法的作用其實一樣,在Java里都是用來對比兩個對象是否相等;

(1)equal()相等的兩個對象他們的hashCode()肯定相等,也就是用equal()對比是絕對可靠的;

(2)hashCode()相等的兩個對象他們的equal()不一定相等,也就是hashCode()不是絕對可靠的。

對於需要大量並且快速的對比的話如果都用equal()去做顯然效率太低,所以解決方式是,每當需要對比的時候,首先用hashCode()去對比,如果hashCode()不一樣,則表示這兩個對象肯定不相等(也就是不必再用equal()去再對比了),如果hashCode()相同,此時再對比他們的equal(),如果equal()也相同,則表示這兩個對象是真的相同了,這樣既能大大提高了效率也保證了對比的絕對正確性!

然而hashCode()和equal()一樣都是基本類Object里的方法,而和equal()一樣,Object里hashCode()里面只是返回當前對象的地址,如果是這樣的話,那么我們相同的一個類,new兩個對象,由於他們在內存里的地址不同,則他們的hashCode()不同,所以這顯然不是我們想要的,所以我們必須重寫我們類的hashCode()方法.


免責聲明!

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



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