HashMap集合擴容原理

2021-10-12 19:28:49 字數 605 閱讀 8472

在 hashmap 中,提供了乙個指定初始容量的構造方法 hashmap(int initialcapacity),這個方法最終會呼叫到 hashmap 另乙個構造方法,其中的引數 loadfactor 就是預設值 0.75f。

public

hashmap

(int initialcapacity,

float loadfactor)

從構造方法的邏輯可以看出,hashmap 並不是直接使用外部傳遞進來的 initialcapacity,而是經過了 tablesizefor() 方法的處理,再賦值到 threshole 上。

static

final

inttablesizefor

(int cap)

可以看出hashmap集合最終儲存的容量是:

table.size = threshold*loadfactor

雖然 hashmap 初始容量指定為 1000,會被調整為 1024,但是它只是表示 table 陣列為 1024,擴容的重要依據擴容閾值會在 resize() 中調整為 768(1024 * 0.75)。

集合之HashMap原理

hashmap 底層是由陣列 鍊錶組成。陣列是entry類陣列,entry中包含key value next。陣列長度預設是16。假設得到的是0,如果entry 0 該位置已有a,則將entry 0 賦值為後插入的b,然後將b的next指向原來的a。隨著hashmap中值的逐步增多,entry會以一...

JDK 1 8 HashMap擴容原理

擴容前計算索引 1010 0101 0000 1111 0000 0101 索引結果 5擴容以後容量是n 32 對應的二進位制是0001 1111 node本身的hash值是不變的,仍然是1010 0101,那麼擴容後node 的索引的計算是通過如下方式得到 擴容後計算索引 1010 0101 00...

HashMap底層實現原理 擴容機制

hashmap基於map介面實現,元素以鍵值對的方式儲存,並且允許使用null 建和null 值,因為key不允許重複,因此只能有乙個鍵為null,另外hashmap不能保證放入元素的順序,它是無序的,和放入的順序並不能相同。hashmap的容量,預設是16 the default initial ...