代码之家  ›  专栏  ›  技术社区  ›  Troskyvs

如果在Java中重写“均衡器”,而不是HASCODE()呢?[复制品]

  •  -3
  • Troskyvs  · 技术社区  · 6 年前

    [核心Java编程]说,如果我重写对象.ErralSe(),那么我应该同时重写对象.HASCODE()。

    这对我来说很奇怪,如果我不同时重写hashcode(),逻辑中是否可能发生错误?

    你能举个例子来说明吗?

    谢谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Eran    6 年前

    如果 a.equals(b) true , a.hashCode() == b.hashCode() 也必须是真的。如果不是这样的话, a 到A HashSet 然后检查是否 set.contains(b) 将返回 false 即使 Set 包含 ,等于 b .

    这就是为什么 hashCode() Object 类)规定:

    如果两个对象根据equals(object)方法相等,则对两个对象中的每个对象调用hashcode方法都必须产生相同的整数结果。