首页 > 其他分享 >HashMap可以设置初始化容量大小吗?如果设置为20是多少?

HashMap可以设置初始化容量大小吗?如果设置为20是多少?

时间:2022-10-13 12:00:14浏览次数:79  
标签:初始化 20 HashMap 容量 19 设置

这个是在我在面试中遇到的问题,是关于HashMap;个人学习笔记记录。

HashMap设置初始化容量20的具体流程:

答:是可以设置初始容量大小,设置为20,容量为32,2的n次方。

1、设置初始化容量为20

 2.看源码

1.传参,调用有参构造方法

这个是源码英文解释  :

 

2.initialCapacity为20,loadFactor为0.75f

 结果为默认的负载因子(loadFactor)0.75,HashMap所能容纳最大key-value键值对个数(threshold)

 

3.调用tableSizeFor方法,cap为20

 运算:

int n = cap -1 = 20 - 1 = 19;

n |= n >>> 1 = n | n >>>1 = 19 | 19 >>> 1 ;

19的二进制为 1 0011,19 >>> 1 为1 0011右移一位,为1001(9)

| 运算规则(一个为真即为真)1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1

 

 n 不小于0,走 n >=  MAXIMUM_CAPACITY

 1 << 30 为 2乘1073741824 很大的一个数字;但是 n 是小于这个数字的,走n+1 也就是31+1 =32。

当程序执行完毕,HashMap初始化的容量就为32。

 

参考链接:(14条消息) HashMap-1.8 之初始化容量与参数设置(源码分析)_唯荒的博客-CSDN博客_hashmap设置参数

        Java &、&&、|、||、^、<<、>>、~、>>>等运算符 - 腾讯云开发者社区-腾讯云 (tencent.com)

        (14条消息) java中 1<<30 什么意思 (转载)_墨笔夺魂的博客-CSDN博客_1 << java

总结:此文是作者原创;有任何不足,请指出修正,大家相互学习, 谢谢!

标签:初始化,20,HashMap,容量,19,设置
From: https://www.cnblogs.com/-3154/p/16787720.html

相关文章