更新時間:2021-07-12 17:01:32 來源:動力節點 瀏覽1816次
首先要了解HashMap的擴容過程,我們就得了解一些HashMap中的變量:
Node<K,V>:鏈表節點,包含了key、value、hash、next指針四個元素
table:Node<K,V>類型的數組,里面的元素是鏈表,用于存放HashMap元素的實體
size:記錄了放入HashMap的元素個數
loadFactor:負載因子
threshold:擴容的閾值,決定了HashMap何時擴容,以及擴容后的大小,一般等于,等于 table * loadFactor
HashMap使用的是懶加載,構造完HashMap對象后,只要不進行put方法插入元素之前,HashMap并不會去初始化或者擴容table。
當首次調用put方法時,HashMap會發現table為空然后調用resize方法進行初始化,當添加完元素后,如果HashMap發現size(元素總數)大于threshold(閾值),則會調用resize方法進行擴容
若threshold(閾值)不為空,table的首次初始化大小為閾值,否則初始化為缺省值大小16
因此,table中的元素只有兩種情況:
元素hash值第N+1位為0:不需要進行位置調整
元素hash值第N+1位為1:調整至原索引的兩倍位置
擴容或初始化完成后,resize方法返回新的table
以上就是動力節點小編介紹的"HashMap之擴容機制",希望對大家有幫助,想了解更多可查看Java基礎教程,如有疑問,請在線咨詢,有專業老師隨時為您服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習