前面章節講到了HashMap的put流程
https://blog.csdn.net/xingyuxinmeng_sky/article/details/92616167
這一節主要講resize擴容。
當桶的大小不足以容納目前資料,就要擴容。

數組長度變為原來的2倍,一系列校驗通過後,開始對原有資料進行拆分。
循環數組,每次得到頭結點,判斷是什麼結構,如果隻有一個節點,直接計算新的下标就可以了,如果是樹,就要對樹進行拆分,
否則就是一個連結清單,這裡詳細解釋連結清單的rehash過程,紅黑樹還是放到後面章節講。
循環連結清單,判斷e.hash & oldCap的值。
e.hash是一個int值,oldCap是一個2的幂
對任意值和2的幂做按位與運算,其結果要麼是0,要麼是oldCap。
這裡還有一點需要注意
Node<K,V> loHead = null, loTail = null;
Node<K,V> hiHead = null, hiTail = null;
這四個變量記錄了新舊的連結清單頭尾節點,目的是為了保證擴容後連結清單原有節點的順序不變。