关于 equals() 和 hashCode()方法

Object 类作为 Java 中所有对象的超类提供了以下方法:
关于 equals() 和 hashCode()方法
我们来看一看 JDK1.8中对于 equals()方法的描述:
关于 equals() 和 hashCode()方法
可以看到提醒我们如果重写了 equals()方法一定要重写 hashCode 方法。
我们再来看一看对于 hashCode() 方法的描述:
关于 equals() 和 hashCode()方法
这个地方说明了三个事:

  1. 对同一个对象的多次 hashCode()方法调用应该返回同一个值
  2. 一个对象的equals()方法相等,则hashCode()方法的调用结果一定相等。
  3. 对 equals()方法调用不相等的对象,不要求 hashCode()返回的值不相等,但是建议尽可能不相等,降低 hash 表进行 hash 的时候的冲突几率。