這個得看情況,如果該對象重寫了equals方法,那么可能會出現equals相同,但hashcode不同的情況,但假如沒有重寫equals方法,那么它默認繼承是Object的equals方法,根據源碼可知,此時equals相同,hashcode一定相同。
public boolean equals(Object obj) { return (this == obj); }
拋開這個問題,我們再開發過程中,應保證equals相等的對象,hashcode也必須相等。當重寫equals方法時有必要重寫hashcode方法,保證相等的對象有相等的哈希碼。
總結:
如果兩個對象相同(equals方法返回true),那么它們的hashCode值一定要相同;
如果兩個對象的hashCode相同,它們並不一定相同。