重写equals方法原则
写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方法原则相关推荐
- 重写equals方法的hashcode_Java equals 和 hashCode 的这几个问题可以说明白吗?
前言 上一篇文章 如何妙用Spring 数据绑定机制,灵魂追问 环节留下了一个有关 equals 和 hashcode 问题 .基础面试经常会碰到与之相关的问题,这不是一个复杂的问题,但很多朋友都苦于 ...
- 重写equals方法时必须重写hashcode方法吗
重写equals方法时必须重写hashcode 有规范: 1,当obj1.equals(obj2) 为 true 时,obj1.hashCode() == obj2.hashCode() 2,当obj ...
- 面试题:重写equals方法为什么通常会重写hashcode方法?
最近在面试的时候,当问完了HashMap的数据结构之后,通常会再多问一个问题,就是:重写equals方法时通常为什么也要重写一下hashcode方法? 其实这个问题,本质上又回到HashMap的应用场 ...
- java中equals的重写_Java重写equals方法(重点讲解)
为什么equals()方法要重写? 判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象.这样我们往往 ...
- JAVA中重写equals()方法的同时要重写hashcode()方法
object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true:注意:当此方法 ...
- 重写 equals 方法就一定要重写 hashCode 方法?其实有个前提
作者 l 会点代码的大叔(CodeDaShu) 如果问到 == 和 equals 的区别,相信很多程序员同学都能脱口而出:一个是判断地址,一个是判断内容. 但是如果继续追问:"你重写过 eq ...
- hashcode相等的两个对象一定相等吗_为什么重写 equals方法时一定要重写hashCode方法?...
推荐阅读: 一线架构师总结SpringBoot,Cloud,Nginx与Docker,不信你搞不懂 47天洒热血复习,我终于"挤进"了字节跳动(附面经+学习笔记) 五年时间,从蘑菇 ...
- Java中重写equals()方法时注意点
Java中重写equals()方法时注意点 一直说,重写一个对象的equals()方法时我们必须重写HashCode()方法,但是如果我们不重写呢?会有什么影响呢? 首先看一下,什么情况下我们需要重写 ...
- ArrayList的remove方法(重写equals方法) 与LinkedList的常用操作
package C12_18;import java.util.ArrayList;public class joy {public static void main(String[] args) { ...
最新文章
- C#实现的正余玄函数图象
- 帝国cms后台用户名密码正确显示您还未登录错误的原因及解决方案
- retinaface人脸姿态
- Python3安装配置【转】
- 创建一个多进程(multiprocessing.Process)
- 骁龙820和KryoCPU:异构计算与定制计算的作用 【转】
- 阿里如何面试MySQL优化CPU消耗
- [SCSS] Pure CSS for multiline truncation with ellipsis
- html5制作线路图,HTML5画电路图
- [转]供应链管理方面的书籍
- 服装业成本核算方法大全
- 2020年初冠状病毒大事记随笔
- 安卓动画壁纸实战:制作一个星空动态壁纸(带随机流星动画)
- 如何使用DDexec在Linux上隐蔽运行二进制文件
- Python爬取20w+表情包,微信斗图谁怕谁!
- 华为云数据库推出表数据快速恢复,细粒度解决用户误删数据问题
- matlab学习——线性规划
- ROUGE: A Package for Automatic Evaluation of Summaries
- 基于ServiceStage的微服务开发与部署(二)
- 12、Storage(存储)(基础知识)