1. 程式人生 > >為什麽重寫equals()方法就必須重寫hashCode()方法

為什麽重寫equals()方法就必須重寫hashCode()方法

shc 依然 為什麽 出現 pos 性能 導致 clas 什麽

hashCode()和equals()保持一致,如果equals方法返回true,那麽兩個對象的hasCode()返回值必須一樣。如果equals方法返回false,hashcode可以不一樣,但是這樣不利於哈希表的性能,一般我們也不要這樣做。重寫equals()方法就必須重寫hashCode()方法的原因也就顯而易見了。

假設兩個對象,重寫了其equals方法,其相等條件是屬性相等,就返回true。如果不重寫hashcode方法,其返回的依然是兩個對象的內存地址值,必然不相等。這就出現了equals方法相等,但是hashcode不相等的情況。這不符合hashcode的規則。下邊,會介紹在集合框架中,這種情況會導致的嚴重問題。

為什麽重寫equals()方法就必須重寫hashCode()方法