码迷,mamicode.com
首页 > 其他好文 > 详细

HashMap源码

时间:2019-07-17 00:43:44      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:使用率   一个   hold   计数器   不为   hashcode   rap   lan   idt   

 

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

负载因子,控制数组的使用率。

TREEIFY_THRESHOLD变红黑树上限

UNTREEIFY_THRESHOLD拆树

size计数器,当计数器大于threshold时,紧要进行扩容操作。

threshold = floatFactor*DEFAULT_INITIAL_CAPACITY   (0.75*16)=12

static final int hash(Object key) {
        int h;
        return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);  如果k有的ey不为null,计算key的hash值,右移16位,取异或,是为了让

                                                                                                       h值都落在hash表中比如第一次数组长度为16,下标0-15,这个h为0-15中的任一个

                                                                                                       值。
    }

n是保存数组的长度

 if ((p = tab[i = (n - 1) & hash]) == null)
            tab[i] = newNode(hash, key, value, null);

如果k有的ey不为null,计算key的hash值,右移16位,取异或,是为了让

h值都落在hash表中比如第一次数组长度为16,下标0-15,这个h为0-15中的任一个值。

HashMap源码

标签:使用率   一个   hold   计数器   不为   hashcode   rap   lan   idt   

原文地址:https://www.cnblogs.com/zmy-520131499/p/11198189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!