哈希表(如 HashMap)中的高效的位运算技巧

AI-摘要
LNotes-AI GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
哈希表(如 HashMap)中的高效的位运算技巧
Liuxz1 | static final int tableSizeFor(int cap){ |
它的作用就是把我们传入的初始容量值 变成离他最近的而且是2的整数次方的值
17 –> 32
16 –>16
31 –>32
33 –>64
帮助理解:
二进制 10000000010 对应的十进制是 1026,假设这就是 cap-1 的值(即 n = 1026),执行过程如下:
初始
n = 10000000010(二进制)n |= n >>> 1
右移 1 位得到01000000001,按位或后结果为11000000011n |= n >>> 2
右移 2 位得到00110000000,按位或后结果为11110000011n |= n >>> 4
右移 4 位得到00001111000,按位或后结果为11111111011n |= n >>> 8
右移 8 位得到00000000111,按位或后结果为11111111111n |= n >>> 16
右移 16 位后结果为 0,按位或后值不变最终结果是二进制
11111111111(十进制 2047),这是大于等于 1026 的最小的 2 的幂次方减 1(2¹¹-1)。
- 注意:
cap - 1这一步的核心作用就是处理原始容量本身已经是 2 的幂次方的情况,确保最终计算结果正确。
根据哈希值 计算元素在桶中的索引
1 | //h 就是哈希值 (经过扰动函数之后的) |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果




