221,677
社区成员
发帖
与我相关
我的任务
分享使用new HashMap()不传值,默认大小是16,负载因子是0.75。如果传入参数K,那么初始化容量大小为大于K的2的最小整数幂。比如传入的是10,那么初始化容量大小就是16(2的4次方)。
追问:为什么HashMap的数组长度要取2的整数幂?
因为这样数组长度-1正好相当于一个“低位掩码”。“与”操作的结果就是散列值的高位全部归零,只保留低位值,用来做数组下标访问。以初始长度16为例,16-1=15。2进制表示是00000000 00000000 00001111。和某散列值做“与”操作如下,结果就是截取了最低的四位值。
————————————————
版权声明:本文为CSDN博主「拨云见日yab」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yanganbang880605/article/details/121019043