HashMap 數據結構解析:算法
HashMap內部使用hash表(本質是一個數組見圖一)數組
HashMap使用hash算法計算獲得存放的索引位置,一次來加快查詢速度,(比ArrayList還要快)數據結構
hash值相同不能表示key徹底相同,須要調用equals再次確認blog
若是key的hash值相同可是equals判斷不相同,那麼使用樹結構或者鏈表來存儲這些hash相同的元素,(具體使用哪一種根據當前map中元素的數量,超過64個元素則使用樹結構)索引
代碼在putVal方法的最後,當添加元素後的大小超過閾值時則直接擴容hash表hash
總結:List
HashMap是使用Hash表(本質是數組)來存儲數據,map
當數據Hash值相同可是equals判斷不一樣時使用鏈表(添加快,查詢慢)方法
當元素數量超過64時則將鏈表轉爲數結構(添加慢,查詢快)im