HashMap1.8展開を探ります

拡張前

 

拡張後

 メカニズム

 

 

 { // 保存順序 
    ノード<K、V> loHead = ヌル、loTail = NULL ; // ローポインタ 
    ノード<K、V> hiHead = ヌル、hiTail = NULL ; // 高ポインタ 
    ノード<K、V> 次に、
     実行{//尾補間、様々な補間及び1.7、ノーリング
        次に = e.next;
         // 低い鎖
        IF((e.hash&OLDCAP)== 0 ){
             IF(== loTail ヌル
                loHead = E;
             
                loTail.next= e;
            loTail = e;
        }
        //属于高链表
        else {
            if (hiTail == null)
                hiHead = e;
            else
                hiTail.next = e;
            hiTail = e;
        }
    } while ((e = next) != null);
    if (loTail != null) {
        loTail.next = null;
        newTab[j] = loHead;//newIndex = oldIndex
    }
    if (hiTail != null) {
        hiTail.next = null;
        newTab[j + oldCap] = hiHead;//newIndex = oldIndex + oldCap
    }
}

 

おすすめ

転載: www.cnblogs.com/AllenDuke/p/12287093.html