1.8HashMap的resize方法
2021-08-12 23:27:35 0 举报
1.8HashMap的resize方法
作者其他创作
大纲/内容
YES
新阈值设置成int类型最大值
分配大约一半红黑树到新扩容数组对应的节点
阈值大小设置成(2<<31) -1也就是int类型正整数的最大值,2进制是31个1。并直接返回原数组
将当前节点根据hash值取模分配到对应新数组下标上
老数组不为空
原来数组长度大于0
将老阈值赋值给新数组的长度
NO
新数组长度设置成默认值16新阈值设置成12( 默认长度16 * 默认负载因子0.75f )
说明是链表节点,同样也是分配大于一半的节点到新数组对应的下标中
老阈值大于0
新数组长度小于1<<30并且老数组长度大于等于16
new一个新数组
新阈值设置成数组大小乘以负载因子
原数组长度大于等于2^30
新数组长度和阈值长度都小于1<<30
是红黑树节点
当前节点就一个头节点
新数组长度赋值为老数组2倍
我觉得这里是作者开的玩笑,意思是特么的都这么大了,还阔个鸡毛的容啊!!!
原数组对应下标头节点不为空
迭代每个原数组下标对应节点
新阈值赋值成老阈值的2倍
新阈值==0
返回新数组
0 条评论
下一页