从源码中我们可以看到获取 key 所对应 Node 数组下标的方法是 (length - 1) & hash,它与我们要求的 hash % length 在 length 是 2 的 n 次方的条件下是等价的,而用这种 & 的位运算的方法相比直接用取余符号进行运算,性能更好。
但是要明确一点,初始化时设置的长度不符合 2 的 n 次方也能正常初始化成功。
//可以看出源码中获取下标的方法是(n - 1) & hash,n对应数组长度
else if ((e = tab[index = (n - 1) & hash]) != null)