hashCode 方法的作用?

2022-07-11 00:03:14 字數 634 閱讀 6711

一般來說,equals這個方法是給使用者呼叫的,如果你想根據自己的業務規則來判斷

2個物件是否相等,你可以重寫

equals()

方法。簡單來講,

equals

方法主要是用來判斷從表面上看或者從內容上看,

2個物件是不是相等。

而hashcode()方法通常是給其他類來呼叫的,比如當我們要把兩個物件放入

hashset

時,由於

hashset

要求兩個物件不能相等,而

hashset

判斷兩個物件是否相等的標準是通過

equals()

比較返回

false

、或兩個物件的

hashcode()

方法返回值不相等——只要滿足任意乙個條件都可會認為兩個物件不相等。

從這個角度來看,我們可以把hashcode()方法的返回值當成這個物件的「識別符號」,如果兩個物件的

hashcode()

相等,即可認為這兩個物件是相等的。因此當我們重寫乙個類的

equals()

方法時,也應該重寫它的

hashcode()

方法,而且這兩個方法判斷兩個物件相等的標準也應該是一樣的。

重寫hashCode方法

hashcode方法在object類中定義如下 public native int hashcode 說明是乙個本地方法,其實現和本地機器相關。我們可以在自己的類中覆蓋hashcode方法。下面string類中重寫的hashcode方法 public int hashcode hash h retu...

重寫hashCode方法

如何衝寫類的hashcode方法,重寫hashcode方法,一般也要重寫equals方法。原則是 1.equals方法必須滿足自反性 x.equals x 必須返回true 對稱性 x.equals y 返回true時,y.equals x 也必須返回true 傳遞性 x.equals y 和y.e...

對hashcode()方法的理解

如何在記憶體 hashtable 中找到物件呢?首先要從hashtable中找到物件對應的hashcode,由於hashcode可能衝突。所以相同的hashcode儲存在乙個鍊錶上。當找到這個鍊錶時候,再使用equals方法與鍊錶中的物件 a b c 進行比對。因此,我們可以得出結論 equals ...