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。
参考: