1. 程式人生 > >HashMap存值與取值方式

HashMap存值與取值方式

Hashmap:(鍵值對方式儲存)

         底層:陣列+連結串列結構

存值方式(陣列初始化長度為16):

例如是一個長度16的陣列:相對於陣列長度求模

再次儲存:


取值:

為什麼說hashmap取值快?  因為在存值的時候是按位置放入的,那麼在取的時候直接就可以找到對應的陣列索引進行取值(不會涉及到全部查詢(慢)).

當資料達到一定資料量後:

會對陣列進行增加,增加方式為當前的一倍,每條鏈子會分解縮短,同時進行重新的分配並求模

例:16>32;   32>64;  64>128; (增加方式)

載入因子(預設為0.75):設定小,儲存的少,更加浪費空間(查詢快),設定大,儲存的多(查詢慢)

擴容時(耗記憶體,拿空間換時間):他並不是把資料儲存到最大值時才擴容,例如長度16的陣列它只是儲存了12個元素就擴容了,因為它要保證查詢快.即便是資料存的少(前提是他會先判斷下將要儲存第13個數據的索引位置上如果有資料則擴容,無則新增到這這個索引上)下一次再進行這樣判斷.

擴容後:

進行這次的新增前,會先把之前的分配好,再新增此次