当前位置: 首页 > ai >正文

hashmap计算key的hash的时候为什么要右移16位

static final int hash(Object key) {int h;return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}

hashmap计算key的hash的时候,右移16位目的是为了让低16位包含完整的hash值的信息,因为大部分情况下,hashmap的数组长度是小于2的16次方的,
而计算index或者说索引或者说桶的时候,是用hashmap的数组长度-1 & 上面计算的hash值,所以如果上面提到的hash值包含整个hash的32位信息的话,极大的减少了hash碰撞的可能性
因为数组长度-1的二进制绝大部分场景是不会超过2的16次方,也就是二进制的16位的,所以16位到32位都是0,和上面的hash值计算&的结果从16到32位也都是0

计算index:

if ((p = tab[i = (n - 1) & hash]) == null)
http://www.xdnf.cn/news/19226.html

相关文章:

  • [光学原理与应用-329]:ZEMAX - 主要用途与主要功能
  • 复现 RoboDK 机械臂几何校准(Staubli TX2‑90L / TX200)
  • Redis(自写)
  • MySQL 简介
  • RocketMQ源码详解(NameServer启动流程)
  • Altium Designer中电路板设计
  • 【ICO】快速制作ICON教材/使用icofx3快速制作ico
  • 生成对抗网络(GAN):深度学习领域的革命性突破
  • 深入解析HarmonyOS:UIAbility与Page的生命周期协同
  • var maxScore = Int.MinValue 详解
  • 最长递增子序列(LIS)的 DFS 解法详解与实现
  • 【69页PPT】智慧工厂数字化工厂蓝图规划建设方案(附下载方式)
  • 【计算机组成原理】LRU计数器问题
  • 项目管理的五个阶段是什么
  • 关于PXIe工控机的网速问题XH-PXIe7313万兆网卡
  • Java学习day_14之API(正则表达式)
  • 生成式BI工具(WrenAI)
  • rhel-server-7.9-x86_64-dvd.iso
  • AFSIM仿真工具介绍与源码编译
  • 【开题答辩全过程】以 靖西市旅游网站为例,包含答辩的问题和答案
  • [Oracle] LENGTH()函数
  • php电子签名
  • 【C++】掌握string类操作:高效处理字符串
  • 3D生成模型-NeRF:用神经辐射场定义视图合成
  • Ferris Wheel (贪心 | 双指针)
  • ubuntu 安装conda, ubuntu24安装miniConda
  • 【Pytorch】生成对抗网络实战
  • 服务器托管多少钱一年?服务器托管收费标准
  • React useState基本使用
  • 3000. 对角线最长的矩形的面积