HashMap的初始容量为什么设为16
2019-07-06 本文已影响0人
五_六柒
length 的值为2 的整数次幂,h & (length - 1)相当于对 length 取模。这样提高了效率也使得数据分布更加均匀。
为什么会更加均匀?
length的值为偶数,length - 1 为奇数,则二进制位的最后以为为1,这样保证了h & (length - 1)的二进制数最后一位可能为1,也可能为0。如果为length为奇数,那么就会浪费一半的空间。
length 的值为2 的整数次幂,h & (length - 1)相当于对 length 取模。这样提高了效率也使得数据分布更加均匀。
为什么会更加均匀?
length的值为偶数,length - 1 为奇数,则二进制位的最后以为为1,这样保证了h & (length - 1)的二进制数最后一位可能为1,也可能为0。如果为length为奇数,那么就会浪费一半的空间。