我们先来看一下java官方 jdk中关于equals方法和hashCode方法的介绍:
不知道读者们注意到一个细节没有,就是:
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
那么为什么equals方法重写时,有必要重写hashCode方法呢?
其实这个涉及到hash算法,比较复杂,我们先来记下答案:
为了确保相同数值的内容调用equals方法的结果一样,此时各自调用hashCode方法的结果一样,此时交由同样的哈希算法算出的索引位置相同,减少比较次数,以此提高性能。
关于hash算法呢,读者可以自行查阅相关资料!