十三、hashCode和equals的理解

99 阅读1分钟

hashCode()方法和equals()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致。

1、为什么在重写equals方法的时候需要重写hashCode方法呢?

因为有强制的规范指定需要同时重写hashcode和equals方法

  • equals()相等的两个对象他们的hashCode()肯定相等
  • hashCode()相等的两个对象他们的equals()不一定相等
 public static void main(String[] args) {
        String a="通话";
        String b="重地";
        System.out.println(a.equals(b));
        System.out.println(a.hashCode());
        System.out.println(b.hashCode());
    }
// 打印结果:
    false
    1179395
    1179395

3、什么时候需要重写?

一般的地方不需要重写hashCode,只有当类需要放在HashTable、HashMap、HashSet等等hash结构的集合时才会重写hashCode。

参考:

谈谈hashCode()和equals()的关系