为什么HashMap的容量是2的n次幂?

为什么HashMap的容量是2的n次幂?
这是一个比较小的知识点,也是一个常见面试题。

  • 首先我们要了解与(&)运算的执行速度比模(%)快很多,可以通过程序验证。
  • 使用散列法计算时,因为2的n次幂减一的二进制每一位都是1,这时进行与(&)运算和进行模(%)运算结果是一样的(见下图),但使用&运算计算效率更高,因此容量是2的n次幂。
    为什么HashMap的容量是2的n次幂?