天天看點

hashCode()和equals()方法#程式員#java#面試1.hashCode()方法:作用:計算對象的哈希碼,

作者:程大白7g0E

hashCode()和equals()方法

#程式員 #java #面試

1. hashCode() 方法:

作用:計算對象的哈希碼,得到一個整數值,通常用來确定對象在哈希表等資料結構中的存儲位置,提高查找和插入的效率。

計算規則:通常基于對象的屬性,不同的對象可能産生相同的哈希碼,即哈希沖突。

2. equals() 方法:

作用:比較兩個對象是否在邏輯上相等,預設使用對象的引用位址進行比較。

重寫:可以根據對象的屬性重寫equals()方法,實作自定義的相等比較邏輯。

3. 重寫equals()方法的注意事項:

自反性(Reflexive):對于任何非空引用對象 x,x.equals(x) 應該傳回 true。

對稱性(Symmetric):對于任何非空引用對象 x 和 y,如果 x.equals(y) 傳回 true,則 y.equals(x) 也應該傳回 true。

傳遞性(Transitive):對于任何非空引用對象 x、y 和 z,如果 x.equals(y) 傳回 true,且 y.equals(z) 也傳回 true,則 x.equals(z) 也應該傳回 true。

一緻性(Consistent):對于任何非空引用對象 x 和 y,多次調用 x.equals(y) 應該始終傳回相同的結果,前提是對象上的資訊沒有被修改。

對 null 的比較(Comparison to null):對于任何非空引用對象 x,x.equals(null) 應該傳回 false。

4. 哈希碼和equals方法的關聯:

在重寫equals()方法時,通常也需要同時重寫hashCode()方法,以保證相等的對象具有相同的哈希碼。

在使用哈希表等資料結構時,先根據哈希碼确定存儲位置,再使用equals()方法處理可能的哈希沖突。

用equals()判等的兩個對象的哈希碼一定相等,用equals()判不等的兩個對象的哈希碼不一定不相等。

5. 重寫場景:

需要在自定義對象之間進行比較或存儲在哈希集合中時,需要重寫hashCode()和equals()方法。

常見場景:實作緩存、資料唯一性校驗或自定義資料結構時,重寫這些方法有助于控制對象的比較和存儲行為。

hashCode()和equals()方法#程式員#java#面試1.hashCode()方法:作用:計算對象的哈希碼,
hashCode()和equals()方法#程式員#java#面試1.hashCode()方法:作用:計算對象的哈希碼,
hashCode()和equals()方法#程式員#java#面試1.hashCode()方法:作用:計算對象的哈希碼,
hashCode()和equals()方法#程式員#java#面試1.hashCode()方法:作用:計算對象的哈希碼,
hashCode()和equals()方法#程式員#java#面試1.hashCode()方法:作用:計算對象的哈希碼,
hashCode()和equals()方法#程式員#java#面試1.hashCode()方法:作用:計算對象的哈希碼,
hashCode()和equals()方法#程式員#java#面試1.hashCode()方法:作用:計算對象的哈希碼,
hashCode()和equals()方法#程式員#java#面試1.hashCode()方法:作用:計算對象的哈希碼,

繼續閱讀