美文网首页
hashCode() 和 equals()

hashCode() 和 equals()

作者: 萝灏 | 来源:发表于2018-12-03 15:25 被阅读0次
    • 1、如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同。
    • 2、如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false)。
    • 3、如果不重写equals,那么比较的将是对象的引用是否指向同一块内存地址,重写之后目的是为了比较两个对象的value值是否相等。
    • 4、为什么必须要重写hashcode方法,其实简单的说就是为了保证同一个对象,保证在equals相同的情况下hashcode值必定相同,如果重写了equals而未重写hashcode方法,可能就会出现两个没有关系的对象equals相同的(因为equals都是根据对象的特征进行重写的),但hashcode确实不相同的。
    • 5、 equals与hashCode的定义必须一致,两个对象equals为true,就必须有相同的hashCode。例如:如果定义的equals比较的是小猫的 name,那么hashCode就需要散列该 name,而不是小猫的 color 或 size。

    资料来源于:https://www.cnblogs.com/xiaoxi/p/7279282.html

    相关文章

      网友评论

          本文标题:hashCode() 和 equals()

          本文链接:https://www.haomeiwen.com/subject/ojmycqtx.html