21
2021
01

hashmap大小为啥是2的幂次?

HashMap是根据key的hash值决定key放到哪个桶中,通过tab[i = (n - 1) & hash]公式计算得出


这样做的好处在于:


&运算速度快,至少比%取模运算快


能保证索引值肯定在HashMap的容量大小范围内


(n - 1) & hash的值是均匀分布的,可以减少hash冲突

2^n能保证均分。


Java的%、/操作比&慢10倍左右,因此采用&运算会提高性能。


(通过限制length是一个2的幂数,h & (length-1)和h % length结果是一致的。)

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。