HashMap知識點
- hashmap的默認初始長度是16
- hashmap的數據結構包括 初始數組、鏈表、紅黑數
- 數組容量爲2的整數倍:提高運算速度、增加散列度,降低衝突、減少內存碎片
- 插入位置:pos=key%size計算位置
- hash函數與pos定位:hashchode的高16位與低16位進行異或求模,增加散列度,降低衝突
- 插入衝突:通過單鏈表解決衝突,如果鏈表過長(TREEIFY_THRESHOLD=8),進行單鏈表和紅黑樹的轉換以提高查詢速度
- 紅黑樹最小最小容量64
- 新節點插入鏈表時,使用的是“頭插法”(假定後插入的數據被查找的可能性更大)
- 擴容:達到容量的0.75倍時進行X2擴容
- 擴容後數據排布:要麼原位置、要麼原下標+原容量的位置
- 序列化:只存儲數組的容量、實際節點數量和各個節點的key、value值
後續學習的知識點
- 位移運算、取模、高位與
- 紅黑樹