HashMap源码
Posted zmy-520131499
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap源码相关的知识,希望对你有一定的参考价值。
负载因子,控制数组的使用率。
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源码的主要内容,如果未能解决你的问题,请参考以下文章