new一个HashMap的时候,会发生什么吗?

提问者:帅平 问题分类:面试刷题
new一个HashMap的时候,会发生什么吗?
1 个回答
回忆多美好
回忆多美好
HashMap有几个构造方法,但最主要的就是指定初始值大小和负载因子的大小。
如果我们不指定,默认HashMap的大小为16,负载因子的大小为0.75
HashMap的大小只能是2次幂的,假设你传一个10进去,实际上最终HashMap的大小是16,你传一个7进去,HashMap最终的大小是8,具体的实现在tableSizeFor可以看到。
我们把元素放进HashMap的时候,需要算出这个元素所在的位置(hash)。
在HashMap里用的是位运算来代替取模,能够更加高效地算出该元素所在的位置。
而负载因子的大小决定着哈希表的扩容和哈希冲突。
比如现在我默认的HashMap大小为16,负载因子为0.75,这意味着数组最多只能放12个元素,一旦超过12个元素,则哈希表需要扩容。
发布于:2年前 (2023-03-16) IP属地:四川省
我来回答