hymn

忽有故人心头过,回首山河已是秋。

  menu
132 文章
0 浏览
4 当前访客
ღゝ◡╹)ノ❤️

Java 1.8扩容机制怎么确定当前元素在原位置还是原位置+原下标

扩容后新增的那个参与与运算的位是0还是1,
0:原位置,1:原位置加原长度
为什么?
因为扩容后,hashmap的长度变为之前的2倍,长度的位多了一位,比如之前16,是1 0000,扩容后变为32,是10 0000,
而计算key的下标是key的hash值 与(&)长度减一,假如key 的hash值是10,二进制就是1010,下标就是 1010 & 1111,扩容后就是1010 & 1 1111,
就是参与计算 多出来的那个位 是0就是原位置,是1就是原位置加原长度


标题:Java 1.8扩容机制怎么确定当前元素在原位置还是原位置+原下标
作者:hymn
地址:https://dxyhymn.com/articles/2021/02/23/1614072043385.html