爲什麼重寫equals則一定需要重寫hashcode

 

主要是爲了避免Map,Set內出現重複的元素。

equals是判斷兩個對象是否相等的判斷依據。而hashcode在map中是用來查找對應的對象在數組的下標的。如果equals被重寫了而hashcode沒有被重寫,那麼意味着2個equals相同(實際也就是相同)的對象,他們有着不同的數組下標,那麼一個map裏就有可能出現2個相同的key了,這明顯是不合規矩的 

 

重寫equals應滿足的規則:

1 自反性         ---------      x.equals(x) 返回true

2 對稱性         ---------      若x.equals(y)返回true,那麼y.equals(x)返回true

3 傳遞性         ---------      若x.equals(y) 又有 y.equals(z) 那麼 x.equals(z) 返回true

4 一致性         ---------      若x.equals(y)爲true,那麼無論調用多少次,始終返回true

5 非空性         ---------       x.equals(null)的結果始終未false

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章