hashCode()方法是Java中的一個native方法,用於為對象生成一個哈希碼值。這個方法在Java的集合框架中非常重要,特別是在使用哈希表(如HashMap)時。
當兩個對象根據equals()方法被判定為相同時,它們應該具有相同的哈希碼值。這意味著,如果對一個對象多次調用equals()方法,它應該始終返回相同的結果,同樣,如果多次調用該對象的hashCode()方法,也應始終返回相同的整數。
然而,這並不意味著所有對象的哈希碼都應該是唯一的,實際上,Object類中的默認hashCode實現會根據對象的記憶體地址生成哈希碼,這可能導致不同的對象具有相同的哈希碼值。在大多數情況下,這種行為可以提供良好的性能,因為哈希碼的分布應該是均勻的,這樣可以減少哈希衝突。
如果一個類重寫了equals()方法,通常也需要重寫hashCode()方法,以保持這兩個方法的一致性。此外,程式設計師在自定義類時,應該意識到不同的對象可能具有不同的哈希碼值,這可能會影響集合框架的性能。
在某些情況下,使用不同的屬性組合來生成哈希碼,可以幫助減少哈希衝突,提高哈希表的性能。