Boolean.hashCode()?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (14)

类布尔值的hashCode()方法实现如下:

public int hashCode() {
    return value ? 1231 : 1237;
}
提问于
用户回答回答于

为什么是素数?

假设有那么一秒,我们选择了合成数(非素数),比如1000和2000。将布尔值插入哈希表时,千真万确假的会进水桶1000 % NRESP2000 % N(在哪里N是桶的数量)。

  • 1000 % 8同桶2000 % 8
  • 1000 % 10同桶2000 % 10
  • 1000 % 20同桶2000 % 20
  • ...

换句话说,它会导致多次碰撞

这是因为1000(23,53)的因式分解和2000(24,53)的因式分解有许多共同的因素。因此,选择素数,因为它们不可能有任何共同的因素与桶的大小。

扫码关注云+社区