1. 程式人生 > >關於hashmap的實現原理的學習

關於hashmap的實現原理的學習

  Hashmap是由一個Entry陣列及連結串列實現的,當使用put(key, value)將鍵值對儲存到Map中時,首先會呼叫hashCode()方法獲取hashCode,並對陣列長度取餘找到在陣列上的儲存位置,然後判斷該位置上上是否有元素,沒有的話建立Entry物件存入該位置,有的話先判斷該位置的連結串列有沒有該key,有的話將該key所在的value改變為新的value,沒有的話建立Entry物件並存儲到該位置,並令該Entry的next等於之前的Entry物件;當我們使用get(key)獲取物件時,首先呼叫hashCode()返回hashCode,從而找到bucket位置,然後呼叫keys.equals()方法找到連結串列中的正確位置,最後返回該物件。

  即為當儲存鍵值對時,先尋找陣列上的儲存位置並判斷是否有元素,若無就建立一個新的Entry物件,有的話就判斷連結串列中是否有該key,若有的話就覆蓋原value值,沒有的話就建立一個物件並存儲,並使next遊標指向之前的Entry物件

  get方法即為,呼叫方法獲取hashCode,並呼叫keys。equals方法找到連結串列中的正確位置並返回value值