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结果是一致的。)
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结果是一致的。)
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。