为什么重写了equals() 就要重写hashcode()

规定:
1、两个对象相等,则hashcode也一定是相等的;
2、两个对象相等,对两个对象分别调用equals()都返回 true;
3、两个对象有相同的hashcode,但不一定相等

为什么重写了equals() 就要重写 hashCode() 呢?
https://www.cnblogs.com/yaobolove/p/5086510.html
默认从Object继承而来的hashCode()是基于对象的ID实现的,如果重写了equals()方法是基于对象的内容实现的,而hashCode()方法保持不变,就会导致明明“相等”的两个对象 hashcode却不相同。

所以 如果没有重写hashCode(),则该类的两个对象无论如何都不会相等,即使两个对象的内容都完全相同。

猜你喜欢

转载自www.cnblogs.com/DDiamondd/p/10721494.html