关于hashMap利用hashCode数组定位indexFor的理解
来源:互联网 发布:程序员级别划分 编辑:程序博客网 时间:2024/05/18 01:11
关于hashMap利用hashCode数组定位indexFor的理解
读到hashMap原理的时候很难理解hashMap对底层数组定位的算法,
static int indexFor(int h, int length) { return h & (length-1); }
因为length=2^n对应的二进制中只有一个位为1,如果直接计算h & length,那么只能得到两种结果(2^n或0),而length-1=2^n-1对应的二进制中末尾有n个位都是1。计算h &( length-1)其实等价于计算h%length,本质就是截取h的后n个二进制位,目的是将我们put进来的元素的key映射到HashMap底层数组对应的hash桶中,这里采用与运算比模运算的开销小得多,由于indexFor函数经常要使用,所以为了效率HashMap要求底层数组的length总是2的幂,这样就能用与运算代替模运算了。
阅读全文
0 0
- 关于hashMap利用hashCode数组定位indexFor的理解
- HashMap的indexFor方法
- hashmap和hashset的理解,关于hashcode和equals。
- HashMap里的hash、indexFor方法
- Java HashMap的hash和indexFor函数
- 关于hashmap的理解
- HashMap中的indexFor方法分析
- 求HashMap的hashCode
- 关于HashCode和equals的理解
- 关于hashcode()函数理解
- 关于CSS定位的理解
- HashMap里面hashCode的原理
- hashmap的hashcode 与equals
- Md5当作hashcode的hashmap
- 关于hashcode()方法和equals()方法的一些理解
- 关于hashcode和equals方法重写的一些理解!
- java的HashCode equals == 以及hashMap底层实现深入理解
- 对hashCode的理解
- gamemaker 更新 runtime 快一点
- java学习旅程(001)数据库知识点整理
- nginx-基于IP的虚拟主机配置
- 练习2
- 黑客零起步——菜鸟必看!
- 关于hashMap利用hashCode数组定位indexFor的理解
- 学生信息系统优化(二)
- HDU3533 Escape —— BFS / A*算法 + 预处理
- html_js之demo
- 表单验证
- Python Celery队列
- 一个C语言输入输出细节引发的灾难
- 指针变量的数据类型
- 按钮选择,点击换颜色