不对,如果两个对象x 和 y 满足 x.equals(y) == true,它们的哈希码(hashCode)应当相同。

Java 对于eqauls 方法和 hashCode 方法是这样规定的:

(1)如果两个对象相同(equals 方法返回 true),那么它们的hashCode 值一定要相同;

(2)如果两个对象的 hashCode 相同,它们并不一定相同。

当然,你未必要按照要求去做,但是如果你违背了上述原则就会发现在使用容器时,相同的对象可以出现在 Set 集合中,同时增

加新元素的效率会大大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降)。

首先equals 方法必须满足自反性(x.equals(x)必须返回 true)、对称性(x.equals(y)返回 true 时,y.equals(x)也必须返回 true)、传递性(x.equals(y)和 y.equals(z)都返回 true 时,x.equals(z)也必须返回 true)和一致性(当x 和 y 引用的对象信息没有被修改时,多次调用 x.equals(y)应该得到同样的返回值),而且对于任何非 null值的引用 x,x.equals(null)必须返回false。

实现高质量的equals方法的诀窍包括:

1. 使用==操作符检查"参数是否为这个对象的引用";

2. 使用 instanceof 操作符检查"参数是否为正确的类型";

3. 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;

4. 编写完 equals 方法后,问自己它是否满足对称性、传递性、一致性;

5. 重写 equals 时总是要重写 hashCode;

6. 不要将 equals 方法参数中的 Object 对象替换为其他的类型,在重写时不要忘掉@Override 注解。

两个对象值相同(x.equals(y) == true),但却可有不同的hashCode,这句话对不对?相关推荐

  1. 面试题:两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

    两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 对.如果是String等类的话,必须有相同的hashcode: 但若是这个类重写了hashc ...

  2. 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对

    答:不对,有相同的 hash code这是java语言的定义:1) 对象相等则hashCode一定相等:2) hashCode相等对象未必相等 hashCode 的常规协定是: (1)在 Java 应 ...

  3. 【Java面试题】41 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?...

    对. 如果对象要保存在HashSet或HashMap中,它们的equals相等,那么,它们的hashcode值就必须相等. 如果不是要保存在HashSet或HashMap,则与hashcode没有什么 ...

  4. hashCode之一--两个对象值相同,有相同的hash code

    两个对象值相同(x.equals(y) == true),则一定有相同的hash code. 这是java语言的定义:  因为:Hash,一般翻译做"散列",也有直接音译为&quo ...

  5. 两个对象值相同hashcode是否相同

    不对,如果两个对象 x 和 y 满足 x.equals(y) == true,它们的哈希码(hashCode)应当相同. Java 对于 eqauls 方法和 hashCode 方法是这样规定的: ( ...

  6. java比较两个对象重写,不重写equals进行两个对象间的深度比较

    背景 我们知道在Java中比较两个对象是否相同,可以有多种方法,最常见的就是 == 和 equals 方法.但是由于==对比的是对象引用本身,因此重写equals才是最常用和可靠的比较两个对象是否相同 ...

  7. angular判断两个对象值是否相等,包含对象深层判断,深拷贝的两个对象

    angular public isEqual(obj1:any,obj2:any):boolean{if(!(obj1 instanceof Object) || !(obj2 instanceof ...

  8. java问题,(x.equals(y) == true)有相同的hashCode 应该是不一定

    这个问题在equals没有被重写的情况下是成立 的,如果说x,y是String类型的是没有问题 虽然String类型重写了equals方法但是String比较的是只是字符串值, 对于对象就不一定了 如 ...

  9. java比较两个对象_java判断两个对象是否相等的方法

    java判断两个对象是否相等的方法 发布时间:2020-06-25 13:48:38 来源:亿速云 阅读:197 作者:Leah 这期内容当中小编将会给大家带来有关java判断两个对象是否相等的方法, ...

  10. java怎么判断类相同_java中如何判定两个对象属于同一类 两个对象是不是类的相同实例,即用“===”是什么意思...

    导航:网站首页 > java中如何判定两个对象属于同一类 两个对象是不是类的相同实例,即用"==="是什么意思 java中如何判定两个对象属于同一类 两个对象是不是类的相同实 ...

最新文章

  1. img src=/引发的问题
  2. 【2】青龙面板入门系列教程之宝塔面板的安装以及docker的安装
  3. 如何在github上fork一个项目来贡献代码以及同步原作者的修改
  4. Nginx 配置TCP和UDP负载均衡
  5. 修改lgoin,http://www.tuicool.com/articles/U3iyqq
  6. JSK-127 进制转换【进制】
  7. Hadoop 权威指南 第四版 中文目录
  8. linux检测路径是否存在,不存在则创建指定路径
  9. Chrome网页观看百度云视频加速
  10. java处理图片的所有类_Java的图片处理工具类
  11. 用python导入dmp到oracle
  12. 安森美推出新的高功率图腾柱PFC控制器,满足具挑战的能效标准
  13. Mac更新git用户名和密码
  14. 看卡辛斯基的警告 让我想起 人类简史
  15. garch dcc用matlab,MRS DCC GARCH 模型的MATLAB 程序修改
  16. JAVA 洗衣房管理系统 宿舍洗衣机管理系统
  17. LeetCode-876. 链表的中间结点 C语言
  18. STM32 CAN过滤器详解
  19. 实验篇(7.2) 05. 通过浏览器访问远端内网服务器 (SSL) ❀ 远程访问
  20. springMVC 实现的增删查(没有数据库,用session代替)

热门文章

  1. npm i出错解决Cannot read properties of null (reading ‘pickAlgorithm‘)
  2. java 200以内的素数_java200以内的素数每行每列7个代码怎么写?
  3. 广东四大姓氏,排名第三的是李姓,你的姓氏排名第几?
  4. python拟合曲线_使用python通过点拟合曲线
  5. When it’s time to quit, that’s the time to carry on.
  6. 如何降低和开发人员的bug沟通成本?
  7. POJ3764 The xor-longest Path
  8. 阿里巴巴——三面,面试经历记录
  9. ArangoDB教程(二)-AQL语句使用,图使用,结合WEB界面端
  10. 生成Bernese格式的地球自转参数文件-POLUPD