首页 > 其他 > 详细

探究HashMap1.8的扩容

时间:2020-02-09 16:12:03      阅读:76      评论:0      收藏:0      [点我收藏+]

扩容前

技术分享图片

 

扩容后

技术分享图片

 机制

技术分享图片

 

 

else { // preserve order
    Node<K,V> loHead = null, loTail = null;//低指针
    Node<K,V> hiHead = null, hiTail = null;//高指针
    Node<K,V> next;
    do {//采用尾插法,与1.7头插法不同,不会产生环
        next = e.next;
        //属于低链表
        if ((e.hash & oldCap) == 0) {
            if (loTail == null)
                loHead = e;
            else
                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
    }
}

 

探究HashMap1.8的扩容

原文:https://www.cnblogs.com/AllenDuke/p/12287093.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!