一般來說,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 ...