我们知道Hash 值的范围值-2147483648到2147483647,只要hash值映射的比较松散是很难出现hash冲突的,这样数组的长度加起来会超过40亿,内存中无法存放,所以使用hash值之前与数组长度进行取余操作,结果作为数组的下标,数组下标的计算方法是(n-1)& hash ,n为数组长度,大家可能会疑惑,为什么不是 hash%n ,其是是这样的,hash%n==hash&(n-1)的前提是 n是2的 x次方
HashMap的长度为什么是2的次幂
最新推荐文章于 2024-01-18 11:42:17 发布