zoukankan      html  css  js  c++  java
  • 为什么重写了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(),则该类的两个对象无论如何都不会相等,即使两个对象的内容都完全相同。

  • 相关阅读:
    CSP2018-09
    CSP2018-03
    CSP2017-12
    CSP2017-09
    CSP2017-03
    CSP2016-12
    [算法设计与分析] 奶酪 (并查集)
    5555
    阿超
    结对作业
  • 原文地址:https://www.cnblogs.com/DDiamondd/p/10721494.html
Copyright © 2011-2022 走看看