003

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

答:不對html

1.hashCode()相等的兩個對象他們的equal()不必定相等。

( 由於hashCode()並非徹底可靠,有時候不一樣的對象他們生成的hashcode也會同樣(生成hash值得公式可能存在的問題),因此hashCode()只能說是大部分時候可靠,並非絕對可靠)例子: http://www.javashuo.com/article/p-wdyjgupm-bw.htmlurl

2.equal()相等的兩個對象他們的hashCode()確定相等。

(由於重寫的equal()裏通常比較的比較全面比較複雜,這樣效率就比較低,而利用hashCode()進行對比,則只要生成一個hash值進行比較就能夠了,效率很高)code

概念:hashCode()返回該對象的哈希碼值;equals()返回兩個對象是否相等。htm

理解:全部對於須要大量而且快速的對比的話若是都用equal()去作顯然效率過低。因此解決方式是,每當須要對比的時候,首先用hashCode()去對比,若是hashCode()不同,則表示這兩個對象確定不相等(也就是沒必要再用equal()去再對比了),若是hashCode()相同,此時再對比他們的equal(),若是equal()也相同,則表示這兩個對象是真的相同了,這樣既能大大提升了效率也保證了對比的絕對正確性!對象

文章參考於 https://www.baidu.com/link?url=DaqwQeqv7fZ8000jbcRuSi0l1LyKd14zWj6ERgWqxwKUb2dUIhHAqXmS6S3QO7BS24VO3lpK5FojpmSuF4glvRt77ZWi-GyysARkcjsKTRO&wd=&eqid=f807c1ac005f3770000000035e80a81cblog

相關文章
相關標籤/搜索