源码分析为什么HashMap的table长度一定是2的整次幂

我们今天从源码入手分析一下为什么HashMap的数组table长度一定是2的整次幂。

首先我们先从构造方法来分析HashMap的初始化长度:

HashMap中有4个构造方法
在这里插入图片描述
我们来看看他们分别都是什么

1 . HashMap();

在这里插入图片描述
无参的构造函数,从注释中我们可以看出,如果我们不指定初始长度,那么数组的初始长度就是默认的长度,是一个静态常量DEFAULT_INITIAL_CAPACITY = 16;
emmm确实是2的4次幂,但是不能说明任何问题;我们继续看

2 . HashMap(int initialCapacity)

在这里插入图片描述
诶,我们找到了了一个有一个参数的构造方法,并且这个参数就是用来指定我们数组的初始化长度的,那么我们如果给它一个不是2的整次幂的值,它是咋办的呢,因为这个方法调用了另外一个方法,我们想知道还得看一下这个里面的构造方法,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值