hashMap为啥初始化容量为2的次幂
来源:互联网 发布:windows字体安装包 编辑:程序博客网 时间:2024/06/06 00:50
hashMap源码获取元素的位置:
static int indexFor(int h, int length) { // assert Integer.bitCount(length) == 1 : "length must be a non-zero power of 2"; return h & (length-1);}
解释:
h:为插入元素的hashcode
length:为map的容量大小
&:与操作 比如 1101 & 1011=1001
如果length为2的次幂 则length-1 转化为二进制必定是11111……的形式,在于h的二进制与操作效率会非常的快,
而且空间不浪费;如果length不是2的次幂,比如length为15,则length-1为14,对应的二进制为1110,在于h与操作,
最后一位都为0,而0001,0011,0101,1001,1011,0111,1101这几个位置永远都不能存放元素了,空间浪费相当大,更糟的是这种情况中,数组可以使用的位置比数组长度小了很多,这意味着进一步增加了碰撞的几率,减慢了查询的效率!这样就会造成空间的浪费
阅读全文
0 0
- hashMap为啥初始化容量为2的次幂
- hashMap为啥初始化容量为2的次幂
- hashMap为啥初始化容量为2的次幂
- Hashmap的容量为什么是2的幂次
- NanguoCoffee 知道为啥HashMap里面的数组size必须是2的次幂?
- 知道为啥HashMap里面的数组size必须是2的次幂?
- 知道为啥HashMap里面的数组size必须是2的次幂?
- Hashmap为什么容量是2的幂次,什么是负载因子
- Hashmap为什么容量是2的幂次,什么是负载因子
- Hashmap为什么容量是2的幂次,什么是负载因子
- Hashmap为什么容量是2的幂次,什么是负载因子
- Java和guava关于hashmap在初始化的时候最好给个初始容量
- HashMap的容量与扩容
- HashMap的容量与扩容
- HashMap的容量与扩容
- HashMap的容量与扩容
- HashMap的容量与扩容
- HashMap最大容量为什么是2的32次方
- innerHTML、innerText和outerHTML的区别
- 学习uLua的博文链接
- 反射的三个阶段
- English story 24
- 【Java学习3.5.2】强制类型转换2
- hashMap为啥初始化容量为2的次幂
- 转行解惑0--程序为什么能完成指令
- Hankson的趣味题 解题报告
- 机器学习笔记--朴素贝叶斯 &三种模型&sklearn应用
- 使用CSS3绘制简单的Android机器人
- java并发编程简单分析
- Problem G. Graph 2015-2016 acmicpc neerc 拓扑排序模拟
- 旧电脑加速
- Faster RCNN 推荐区域理解