写equals方法的原则是什么
看官方文档给出的解释

It is reflexive: for any non-null reference value x, x.equals(x) should return true.
It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
For any non-null reference value x, x.equals(null) should return false.
也就是,重写equals方法时,必须满足下面原则

自反性:对于任何非空参考值x,x.equals(x)应该返回true。
对称性:对于任何非空参考值x和y,当且仅当y.equals(x)返回true时,x.equals(y)才应返回true。
传递性:对于x,y和z的任何非空引用值,如果x.equals(y)返回true,而y.equals(z)返回true,则x.equals(z)应该返回true。
一致性:对于任何非空引用值x和y,只要未修改对象的equals比较中使用的信息,对x.equals(y)的多次调用将始终返回true或始终返回false。
对于任何非null参考值x,x.equals(null)应该返回false。

重写equals方法原则相关推荐

  1. 重写equals方法的hashcode_Java equals 和 hashCode 的这几个问题可以说明白吗?

    前言 上一篇文章 如何妙用Spring 数据绑定机制,灵魂追问 环节留下了一个有关 equals 和 hashcode 问题 .基础面试经常会碰到与之相关的问题,这不是一个复杂的问题,但很多朋友都苦于 ...

  2. 重写equals方法时必须重写hashcode方法吗

    重写equals方法时必须重写hashcode 有规范: 1,当obj1.equals(obj2) 为 true 时,obj1.hashCode() == obj2.hashCode() 2,当obj ...

  3. 面试题:重写equals方法为什么通常会重写hashcode方法?

    最近在面试的时候,当问完了HashMap的数据结构之后,通常会再多问一个问题,就是:重写equals方法时通常为什么也要重写一下hashcode方法? 其实这个问题,本质上又回到HashMap的应用场 ...

  4. java中equals的重写_Java重写equals方法(重点讲解)

    为什么equals()方法要重写? 判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象.这样我们往往 ...

  5. JAVA中重写equals()方法的同时要重写hashcode()方法

    object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true:注意:当此方法 ...

  6. 重写 equals 方法就一定要重写 hashCode 方法?其实有个前提

    作者 l 会点代码的大叔(CodeDaShu) 如果问到 == 和 equals 的区别,相信很多程序员同学都能脱口而出:一个是判断地址,一个是判断内容. 但是如果继续追问:"你重写过 eq ...

  7. hashcode相等的两个对象一定相等吗_为什么重写 equals方法时一定要重写hashCode方法?...

    推荐阅读: 一线架构师总结SpringBoot,Cloud,Nginx与Docker,不信你搞不懂 47天洒热血复习,我终于"挤进"了字节跳动(附面经+学习笔记) 五年时间,从蘑菇 ...

  8. Java中重写equals()方法时注意点

    Java中重写equals()方法时注意点 一直说,重写一个对象的equals()方法时我们必须重写HashCode()方法,但是如果我们不重写呢?会有什么影响呢? 首先看一下,什么情况下我们需要重写 ...

  9. ArrayList的remove方法(重写equals方法) 与LinkedList的常用操作

    package C12_18;import java.util.ArrayList;public class joy {public static void main(String[] args) { ...

最新文章

  1. C#实现的正余玄函数图象
  2. 帝国cms后台用户名密码正确显示您还未登录错误的原因及解决方案
  3. retinaface人脸姿态
  4. Python3安装配置【转】
  5. 创建一个多进程(multiprocessing.Process)
  6. 骁龙820和KryoCPU:异构计算与定制计算的作用 【转】
  7. 阿里如何面试MySQL优化CPU消耗
  8. [SCSS] Pure CSS for multiline truncation with ellipsis
  9. html5制作线路图,HTML5画电路图
  10. [转]供应链管理方面的书籍
  11. 服装业成本核算方法大全
  12. 2020年初冠状病毒大事记随笔
  13. 安卓动画壁纸实战:制作一个星空动态壁纸(带随机流星动画)
  14. 如何使用DDexec在Linux上隐蔽运行二进制文件
  15. Python爬取20w+表情包,微信斗图谁怕谁!
  16. 华为云数据库推出表数据快速恢复,细粒度解决用户误删数据问题
  17. matlab学习——线性规划
  18. ROUGE: A Package for Automatic Evaluation of Summaries
  19. 基于ServiceStage的微服务开发与部署(二)
  20. 12、Storage(存储)(基础知识)

热门文章

  1. Docker容器之搭建本地私有仓库
  2. 搭建校园电视台和录播教室+在线教育实施方案
  3. 超星高级语言程序设计实验作业 (实验04 数组及其在程序设计中的应用)(二)
  4. python运维开发之第二天
  5. 网易大数据面试题试解
  6. hashtab:为文件属性添加一个数字指纹
  7. bzoj 1778: [Usaco2010 Hol]Dotp 驱逐猪猡
  8. So Easy京东商城
  9. Python 如何实时绘制数据
  10. 【C++基础】第一节课 C++基础知识