hashmap的几个点

总结:

  • 解决碰撞是使用拉链法

  • 为什么数组大小最好是2的整数次方,因为hashmap的hash函数并不是对数组大小取余,因为取余比较耗时,而是使用数组大小减1和hash值做与运算,如果数组大小不是2的整数次方,那么数组大小减1的二进制的最后一位就是0了,和key的hash值取与运算最后一位一直是0,所以有很大的空间浪费。

  • 由于hashmap扩容需要重新计算所有元素的位置所以非常耗时,所以我们在知道hashmap大小的时候可以指定其大小,但是由于factory的存在,我们虽然知道指定2的整数次方,factory * 设定的数组大小 = 需要的数组大小,比如我们需要1000,不是设置为1024就好了,由于factory = 0.75,所以我们需要把数组大小设为 1000 / 0.75 然后再是2的整数次方,就是2048


本站总访问量次,本站访客数人次,本文总阅读量