用途與特色 算法
存儲Key—value形式數據,在JDK1.7時撞庫使用鏈表,在1.8中對HashMap撞庫狀況進行優化,使用鏈表與紅黑樹對撞庫進行優化數組
ps: 紅黑樹還沒整明白爲何會自動平衡,因此暫時略過講解,以後補充。安全
實現算法優化
HashMap的底層實現方式其實就是Node<K,V>[]數組實現,線程
默認初始數組長度是16,默認擴展擴容是在數組長度16*0.75=12時進行擴容。blog
擴容機制get
擴容時機:是在加入數據時,(數組長度16*0.75=12)大於12時進行擴容源碼
擴充的新數組長度是: 數組長度16*0.75=12it
是否線程安全,爲何?table
非線程安全,未對數據的添加、刪除、讀取等作鎖操做
參考:
二叉樹是自頂向下生長
紅黑樹是自底向上生長
根據jdk1.8版本源碼解讀