hashCode 和 Equals
阿新 • • 發佈:2021-07-08
hashCode 和 Equals
hashCode介紹
hashCode()的作用是獲取雜湊碼,也稱為雜湊碼;它實際上是返回一個int整數。這個雜湊碼的作用是確定該物件在雜湊表中的索引位置。hashCode()定義在JDK的
Object.,java中,Java中的任何類都包含有hashCode()函式。散列表儲存的是鍵值對(key-value),它的特點是:能根據"鍵"快速的檢索出對應的“值"。這其中就利用
到了雜湊碼!(可以快速找到所需要的物件)
為什麼要有hashCode
以"HashSet如何檢查重複"為例子來說明為什麼要有hashcode :
物件加入HashSet時,HashSet會先計算物件的hashcode值來判斷物件加入的位置,看該位置是否有值,如果沒有、HashSet會假設物件沒有重複出現。但是如果發現有值,
這時會呼叫equals ()方法來檢查兩個物件是否真的相同。如果兩者相同,HashSet就不會讓其加入操作成功。如果不同的話,就會重新雜湊到其他位置。
這樣就大大減少了equals的次數,相應就大大提高了執行速度。
-
如果兩個物件相等,則hashcode—定也是相同的
-
兩個物件相等,對兩個物件分別呼叫equals方法都返回true
-
兩個物件有相同的hashcode值,它們也不一定是相等的
-
因此,equals方法被覆蓋過,則hashCode方法也必須被覆蓋
-
hashCode()的預設行為是對堆上的物件產生獨特值。如果沒有重寫hashCode(),則該class的兩個物件無論如何都不會相等(即使這兩個物件指向相同的資料)