HashMap 的 put過程


1、hash(key),取key的hashcode進行高位運算,返回hash值
2、如果hash數組為空,直接resize()
3、對hash進行取模運算計算,得到key-value在數組中的存儲位置i
(1)如果table[i] == null,直接插入Node<key,value>
(2)如果table[i] != null,判斷是否為紅黑樹p instanceof TreeNode。
(3)如果是紅黑樹,則判斷TreeNode是否已存在,如果存在則直接返回oldnode並更新;不存在則直接插入紅黑樹,++size,超出threshold容量就擴容
(4)如果是鏈表,則判斷Node是否已存在,如果存在則直接返回oldnode並更新;不存在則直接插入鏈表尾部,判斷鏈表長度,如果大於8則轉為紅黑樹存儲,++size,超出threshold容量就擴容

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM