hashmap为什么是二倍扩容?

  这个很简单,首先我们考虑一个问题,为什么hashmap的容量为2的幂次方,查看源码即可发现在计算存储位置时,计算式为:

    (n-1)&hash(key)

  容量n为2的幂次方,n-1的二进制会全为1,位运算时可以充分散列,避免不必要的哈希冲突。

  所以扩容必须2倍就是为了维持容量始终为2的幂次方。