1. 程式人生 > >HashMap 底層原理_查詢鍵值對過程_equals 和 hashcode 方法

HashMap 底層原理_查詢鍵值對過程_equals 和 hashcode 方法

獲取資料過程 get(key):    我們需要通過key物件獲得 “鍵值對” 物件,進而返回 value 物件。    (1):獲得 key 的 hashcode,通過 hash()  雜湊演算法得到 hash 值,進而定位到陣列的位置。    (2):在連結串列上挨個比較key物件,呼叫equals()方法,將 key 物件和連結串列上所有節點的 key 物件進行比較,直到碰到返回                    true 的節點物件為止;    (3):返回equals() 為true的節點物件的value物件; Java中規定:兩個內容相同(equals()為true)的物件必須有相等的hashCode。因為如果equals()為true,而連個物件的hashCode不同,那在整個儲存過程中就發生了悖論; .擴容問題:         HashMap的位桶陣列,初始化大小為16,實際使用時,顯然大小是可變的,如果位桶陣列中的元素達到(0.75*陣列length),就重新調整陣列的大小,變為原來的2倍大小。 擴容很耗時,擴容的本意是定義更大的陣列,並將舊的陣列內容挨個焙烤到新的陣列中。