哈希碼:
hashCode的作用是用來獲取哈希碼,也可以稱作散列碼。實際返回值為一個int型數據。用於確定對象在哈希表中的位置。
Object中有hashcode方法,也就意味着所有的類都有hashCode方法。
因為hashCode()並不是完全可靠,有時候不同的對象他們生成的hashcode也會一樣(生成hash值得公式可能存在的問題),所以hashCode()只能說是大部分時候可靠,並不是絕對可靠,所以我們可以得出:
1.equal()相等的兩個對象他們的hashCode()肯定相等,也就是用equal()對比是絕對可靠的。
2.hashCode()相等的兩個對象他們的equal()不一定相等,也就是hashCode()不是絕對可靠的。
所有對於需要大量並且快速的對比的話如果都用equal()去做顯然效率太低,所以解決方式是,每當需要對比的時候,首先用hashCode()去對比,如果hashCode()不一樣,則表示這兩個對象肯定不相等(也就是不必再用equal()去再對比了),如果hashCode()相同,此時再對比他們的equal(),如果equal()也相同,則表示這兩個對象是真的相同了,這樣既能大大提高了效率也保證了對比的絕對正確性!
這種大量的並且快速的對象對比一般使用的hash容器中,比如hashset,hashmap,hashtable等等,比如hashset里要求對象不能重復,則他內部必然要對添加進去的每個對象進行對比,而他的對比規則就是像上面說的那樣,先hashCode(),如果hashCode()相同,再用equal()驗證,如果hashCode()都不同,則肯定不同,這樣對比的效率就很高了。