HashMap:为什么容量总是为2的n次幂
2024-09-16 09:37:02
HashMap:为什么容量总是为2的n次幂
1)、HashMap是根据key的hash值决定key放到哪个桶中,通过tab[i = (n - 1) & hash]公式计算得出
这里的n是HashMap的容量,因为n永远是2的次幂,所以n - 1通过二进制表示,永远都是末尾连续1的形式表示(如00001111、00000011),当(n - 1) 和hash做与运算时,会保留hash中后x位的1
例如00001111 & 10000011 = 00000011
这样做的好处在于:
&运算速度快,至少比%取模运算快
能保证索引值肯定在HashMap的容量大小范围内
(n - 1) & hash的值是均匀分布的,可以减少hash冲突
————————————————
版权声明:本文为CSDN博主「邋遢的流浪剑客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40378034/article/details/88220732
最新文章
- #ifndef
- 在myeclipse下安装svn的几种方式
- arguments.callee 调用自身 caller,callee,apply and call
- 解决IE6不支持position:fixed的bug
- Node.js 常用工具 util
- 《Diagnostic use of facial image analysis software in endocrine and genetic disorders: review, current results and future perspectives》学习笔记
- Jfreechart 乱码
- php gd 生成日历图
- 使用modelsim仿真DDR3时编译出错的解决方法
- 下载jdk-api 1.7文档
- 【转】 boot.img的解包与打包
- <;video>;和<;audio>;标签,对视频和音频的支持
- 【ANT】创建删除目录,复制移动重命名文件
- 【转】UNIX时间戳与.net日期类的转换
- TCHAR字符串查找&;反向查找字符串
- flex 增长与收缩
- 网站 HTTP 升级 HTTPS 完全配置手册
- 实战ELK(3) Kibana安装与简单实用
- 从零开始学 Web 之 JavaScript(四)数组
- oracle11g-linux 归档处理