1. 程式人生 > >equals hashcode

equals hashcode

equals 出現在Object中,父類通過比較兩個物件的地址來判斷兩個物件是否一致。

hashcode是直接返回物件在記憶體中的地址。

 

根據業務需求 我們可能需要重寫equals 來判斷兩個物件是否是相同的。同時要修改hashcode的計算方法。

在用到跟hashmap、hashset hashtree相關的資料結構的時候

如果兩個相同的key通過equals判斷是相同的。那麼取出的值應該也相同。

這時候 只重寫equals 不重寫hashcode是不行的

hashmap在計算陣列的偏移量的時候,是根據hash(key) & node<k,v>[].length - 1計算的

hash(key)是根據hashcode計算的

所以equal 和hashcode 的關係必須滿足

如果equal 結果一致。那hashcode的結果必須一致

則如果hashcode的結果不一致,那equals的結果一定不一致

如果equal結果不一致,那hashcode的結果可以一致。也可以不一致。

 

一般 重寫hashcode 通過獲得key的string 返回的hashcode來判斷。