Loading

hashMap寻址算法

hashMap寻址算法

  1. 计算对象的hashCode()。
  2. 再进行调用 hash()方法进行二次哈希,hashcode值右移16位再异或运算,让哈希分布更为均匀。
  3. 最后(capacity-1)&hash 得到索引。

为何HashMap的数组长度一定是2的次幂

  1. 计算索引时效率更高:如果是2的n次幂可以使用位与运算代替取模。
  2. 扩容时重新计算索引效率更高:hash&oldCap==0的元素留在原来位置,否则新位置=旧位置+oldCap
posted @ 2024-05-16 23:33  worshipone  阅读(6)  评论(0编辑  收藏  举报