兩個對象值相同(x.equals(y) == true),但卻可以有不同的hashcode?


  這個得看情況,如果該對象重寫了equals方法,那么可能會出現equals相同,但hashcode不同的情況,但假如沒有重寫equals方法,那么它默認繼承是Object的equals方法,根據源碼可知,此時equals相同,hashcode一定相同。

public boolean equals(Object obj) {
        return (this == obj);
    }

       拋開這個問題,我們再開發過程中,應保證equals相等的對象,hashcode也必須相等。當重寫equals方法時有必要重寫hashcode方法,保證相等的對象有相等的哈希碼。

總結:

  如果兩個對象相同(equals方法返回true),那么它們的hashCode值一定要相同;

  如果兩個對象的hashCode相同,它們並不一定相同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM