Java基础之HashMap流程分析
生活随笔
收集整理的這篇文章主要介紹了
Java基础之HashMap流程分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先我們得說明下HashMapJava1.7和Java1.8之間得區別:
Java1.7:HashMap底層是數組+鏈表
Java1.8:HashMap底層是數組+鏈表+紅黑樹
HashMap.put(key,value)=>流程如下:
首先會將key值進行hash算法拿到一個int類型得hash值,然后根據后續算法得出一個存放數據得角標放入到數組角標相應得位置,當再次存儲值計算零位一個key值得時候計算出得hash數組里面得hash值相同(簡稱哈希碰撞)的話就會將需要存儲得數據放到相應得位置的鏈表中因為HashMap默認容量大小為16,當一直往數組存儲得時候超過加載因子0.75倍也就是12的時候,HashMap就會自動擴容,當擴容的長度大于等于默認值64的時候,并且鏈表長度大于8得時候就會自動轉為紅黑樹結構,當紅黑樹節點小于6又會自動恢復成鏈表結構了。
總結
以上是生活随笔為你收集整理的Java基础之HashMap流程分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 波动率指标公式,有以下这些
- 下一篇: java序列化_夯实Java基础系列22