为什么 AND(&) 运算符使用计算 Hashmap 中的最终索引为什么不使用 modulo(%) 运算符,即 hashValue & ()

Why AND(&) operator used calculating final index in Hashmap why not modulo(%) operator i.e hashValue & ()

我想了解 HashMap 的实现。我在计算键哈希值后发现,最终哈希值是使用 AND 运算符 (hashValue & (n-1)) 生成的,其中 n 是 bucket.Could 的大小 有人解释了为什么不使用模数,这也将保证桶内的输出范围尺寸。

& 运行得更快,以换取只为 2 的幂工作。 (具体来说,x & (n - 1) == x % n 如果 x 是非负数并且 n 是 2 的幂。x & (n - 1) 也做你想要的散列 table —— 即使x 是负数,x & (n - 1) 不是——与 x % n 不同。)

这是完整且唯一的原因。