0

谷歌搜索没有给我任何答案。1000003但我觉得使用整数计算哈希码背后有逻辑和数学推理。

例如,AutoValue 将为给定的值类生成以下哈希码 -

  @Override
  public int hashCode() {
    int h = 1;
    h *= 1000003;
    h ^= this.firstName.hashCode();
    h *= 1000003;
    h ^= this.lastName.hashCode();
    h *= 1000003;
    h ^= this.age;
    return h;
  }

这个特定整数背后的原因是什么?如果我使用 IntelliJ 创建一个被覆盖的hashcode方法,它使用 integer 31

很想知道作者在想什么。

请注意,为什么在 hashCode 中使用素数?是一个类似的问题。但是,这通常是在询问哈希码中的素数,而这是在询问为什么要使用特定值1000003AutoValue而不是例如不同的素数)。

4

0 回答 0