1. 程式人生 > 其它 >自定義物件作為map雜湊表的 鍵key 時【為啥建議要重寫hashCode( )、equals( ) 方法】

自定義物件作為map雜湊表的 鍵key 時【為啥建議要重寫hashCode( )、equals( ) 方法】

自定義物件作為map雜湊表的 鍵key 時【為啥建議要重寫hashCode()、equals() 方法】

1,為啥建議要重寫hashCode()

為啥要重寫hashCode(); //不重寫,預設是比較記憶體地址。

✿ hashCode() 什麼時候用、hashCode() 的作用? ---生成【雜湊表(陣列)】索引

2,為啥建議要重寫 equals() 方法?

為啥要重寫equals(); //不重寫,預設是比較記憶體地址。

equals() 什麼時候用、equals() 的作用 ? ---解決hashCode 衝突時,比較兩個key是否相等

3,疑惑:為啥要重寫 equals(); 使用雜湊值【即只重寫hashCode()方法】比較不行嗎?

當key 不同【例如key的型別不同,String、Integer最後可能算出來相同的hashCode】時,可能算出來相同的雜湊值,可以得到相同的索引。導致新的【key-value】結點覆蓋到原的【key-value】結點,發生hashCode衝突。

//重寫equals() 用來比較兩個物件【例如兩個物件的引用作為 key 儲存在雜湊表map 中,重寫equals() 就可以比較key 是否相等。】