主要是爲了避免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