天天看點

學習:重寫hashCode()方法的必要性

當一個類有可能會和其他類發生比較的時候,我們會重寫equals方法,但大多數情況下,都忽略了重寫hashCode方法。

這裡說一下重寫hashCode的必要性。

當我們使用HashSet或者HashMap的時候,在比對value|key是否存在時,會調用hashCode方法。

注意,hashSet的contains方法其實是依賴于HashMap的containsKey方法的。

我們來看下containsKey方法的實作:

由上面代碼即可知,hashCode是重要的判斷依據,沒有重寫hashCode,equals表現相等的兩個類,它們的hashCode并不相等。

是以會導緻containsKey方法傳回false,測試代碼如下:

包含HashCode的類:

沒有重寫hasCode的類:

測試類:

執行的結果為:

true

false

符合預期。證畢。