心得
来源:互联网 发布:淘宝消费者服务电话 编辑:程序博客网 时间:2024/04/28 15:29
1. HashMap中的hash计算方式(为什么)
减少hash是的碰撞
2. 下表查找(和hash值的关系)
hashcode ^ (hashcode >>> 16),让低16位同时包含了高位和低位的信息,在计算下标时,由于高位和低位的同时参与,减少hash的碰撞。
(n - 1) & hashCode:n - 1 使得低位全为1,高位全为0,位与之后的结果一定在0 ---> n-1范围内
发展过程:
1. put到HashMap中的Object,我们视为它合理的实现了hashCode方法,该方法可以达到良好的散列效果,即碰很少重复
2. 既然hashCode合理,我们就可以考虑用它来散列(分桶)对象
3. 由于需要将对象散列到一定编号范围的捅中(0 -- n),由于n(表大小)是2的整数次方,可以采用n-1和hashcode按位与,得到的结果是在桶范围内,上述我们是hashCode为散列良好的,所以(n -1)&hashCode的计算结果可视为应该分布均匀的。
4. 上述有一个问题,(n -1)&hashCode的计算方式中,假设n=16,那么hashCode其实只有低4位参与了计算,为了进一步降低碰撞的发生,hashCode的计算方式改为了hashcode ^ (hashcode >>> 16),使得低位中同时包含了低位和高位的信息。
======================================================================================================================================
- 心得!
- 心得
- 心得
- 心得
- 心得
- 心得!
- 心得
- 心得
- 心得
- 心得
- 心得
- 心得
- 心得
- 心得
- 心得
- 心得
- 心得
- 心得.
- PL/SQL客户端连接问题
- document 20170926
- Android-版本6.0权限申请AndPermission第三方开源库
- connect to server at 'localhost' failed
- RCNN系列实验的PASCAL VOC数据集格式设置
- 心得
- boostrap-select 用js获取后台数据显示空(实际上数据传)
- weblogic domain无法启动,提示<BEA-141281> <unable to get file lock, will retry ...>
- Scikit-learn使用总结
- 设计模式之构建Builder
- Springboot学习笔记(二)devtools热部署
- Kotlin语法(其他)
- 为什么你需要将代码迁移到ASP.NET Core 2.0?
- 下月发!华为Mate 10开发机首发体验,动态拍照666!