hashCode 和equals 的區別

2021-10-25 02:28:45 字數 401 閱讀 7388

在面試的時候,這是一道比較常見的面試題。現將平時記錄在word裡的面試題q&a匯入部落格裡。

hashcode()是生成物件的雜湊碼,由於只是通過簡單的雜湊函式生成雜湊碼,在小概率的情況下,是有可能不同物件生成相同雜湊碼的。而equals()方法則嚴格的多,考慮到了諸如自反性等原則保證如果equals()結果為true則必定為相同物件,但是這種演算法由於複雜,速度就會慢。所以在比較乙個物件時,常常先用hashcode()比較一遍,如果為false,則必定不是同乙個物件。然後再交由equals()判斷。

這樣,用hashcode()將明顯不為同乙個物件的情況剔除掉後,再由equals()判斷這些剩下的,可以提高速度的同時又保證絕對的正確。所以如果如果重寫equals(),對應的,應重寫hashcode(),配套使用,提高速度。

歡迎批評指正。

equals和hashcode的重寫

下面給出例項 package xuming class student public student string name,int age,int classnum 重寫equals方法 public boolean equals object o 測試引用o是都為null if o null 測...

equals 和hashCode 的區別

equals 反映的是或變數具體的值,即兩個物件包含的值 可能是物件的引用,也可能是值型別的值 hashcode 計算出物件例項的雜湊碼 根據記憶體位址返回的int型的數值 並返回雜湊碼,又稱為雜湊函式。根據object的hashcode都是唯一的 當然,當物件重寫了hashcode 方法時,結果就...

equals 和hashCode 使用總結

equals package cn.galc.test public class testequals 沒有重寫equals class cat 先判斷比較物件是否為null 判斷比較物件是否為要比較類的例項 比較倆個成員變數是否完全相等。public class testequals 重寫equa...