什么是hashCode()?

hashCode()的作用是获取哈希码,也称作为散列码。它实际上是返回一个int整数,这个哈希码的作用是确定该对象在哈希表中

索引的位置。hashCode()定义在Object类中,所以所有的类都有hashCode()函数。

hashCode()存在的意义:

     例如在HashSet查重中,HashSet会先根据hashcode找到要加入位置的索引,同时会与其它以加入的对象的hashcode对比,如果没有一样的hashcode,则要加入的对象原先不存在,HashSet就会将其加进去。如果存在一样的HashCode,就调用equals()方法比较两个对象是否相同,如果相同HashSet就不会让这个对象加入进去。这样很大程度上减少了调用equals()的次数,也就相应的大大提高了执行速度。

hashCode()与equals()的相关规定

  1. 如果两个对象相等,则其hashcode一定相等
  2. 两个对象相等,对两个对象分别调用equals()都返回true
  3. 两个对象hashcode相等其对象不一定相等
  4. 重写equals()方法则必须要重写hashCode()方法

 为什么两个对象hashcode相等其对象不一定相等?

因为hashCode()所使用的杂凑算法也许刚好会让多个对象传回相同的值。

越是糟糕的杂凑算法越容易碰撞,这也与数据值域分布的特性有关。

参考:Java hashCode() 和 equals()的若干问题解答

equals()与hashCode()相关推荐

  1. hash 值重复_程序员:判断对象是否重复,不重写equals和hashcode不行吗?

    前言 大家都知道如果要判断一个对象是否相同,都要在对象实体中重写equals和hashcode方法,那你知道为什么重写这两个方法就能根据自己定义的规则实现相等比较了吗? 今天带大家来了解一下equal ...

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

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

  3. 程序猿的日常——Java基础之equals与hashCode

    equals和hashCode是我们日常开发最常使用的方法,但是因为一般都使用默认的规则,因此也很少会引起关注.不过了解他们的用途和设计的原则,还是会帮助我们更好的设计代码. equals equal ...

  4. Java的equals() 和 hashCode()

    2019独角兽企业重金招聘Python工程师标准>>> 首先,equals()方法和hashCode()方法都来自于Object类的定义,Java类都继承了这两个方法,都定义了自己的 ...

  5. Java实战equals()与hashCode()

    2019独角兽企业重金招聘Python工程师标准>>> 一.equals()方法详解 equals()方法在object类中定义如下: 代码 public boolean equal ...

  6. 通过 SpringBoot 中使用 lombok 实现自动创建JavaBean的get/set方法、全参/无参构造方法、toString()、equals()、hashCode()

    通过SpringBoot中使用lombok实现 先导入依赖 <dependency><groupId>org.projectlombok</groupId>< ...

  7. 关于 equals 和 hashCode,看这一篇真的够了!

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接: https://blog.csdn.net/CringKong/article/de ...

  8. 不同时重写equals和hashCode又会怎样?

    作者:flyhero 微信公众号:码上实战(ID:Push-Code) 可能一问到equals和hashCode相关的问题,就会有人讲他们的自反性,对称性,一致性,传递性等几条约定了,此时我不得不佩服 ...

  9. Java基础提升篇:equals()与hashCode()方法详解

    概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) public int hashCode() Object类是类继承 ...

  10. java baseentity_如何在JPA的BaseEntity中实现equals()和hashcode()方法?

    我有一个BaseEntity类,它是我的应用程序中所有JPA实体的超类. @MappedSuperclass public abstract class BaseEntity implements S ...

最新文章

  1. 如何捕获window.print点击打印或取消_原来1:1的CAD图纸要这样打印!学了这么久才知道...
  2. macOS 环境安装Flutter
  3. python中运算的英文_[lemon]Python中的运算符,LemonPython
  4. [P1580] yyy loves Easter_Egg I
  5. burpsuite全套使用教程
  6. mysql 同一帐号多次登录_freeradius2.1.3 防止用户帐号重复登录
  7. 更改主机名后mysql无法启动_主机名变更导致MySql启动失败
  8. 2021数学建模A题详细思路
  9. 2019/12/9 K60单片机学习
  10. Java数组以及冒泡排序--------07
  11. 【00】伪类选择符-魔芋的理解
  12. 第三届云计算大会 - 华为李三琦:云计算发展与华为运战略(转载)
  13. 人工智能基础——搜索算法
  14. C#基础知识学习——特性(Conditional特性、Obsolete特性、自定义特性)(十六)
  15. 操作系统:虚拟存储器 练习题(带有答案和解析)
  16. 求直角梯形最长对角线(c++基础)
  17. 转转验机源码+验机报告
  18. c语言微博创建转发和删除源代码,[转]QQ空间、新浪微博、腾讯微博等一键分享API链接代码...
  19. 自定义右键菜单 html,自定义右键菜单代码详解(转)
  20. 纽约时报网站获22万付费读者 称收费试验成功

热门文章

  1. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法
  2. 2022-2028年中国汽车制动器行业投资分析及前景预测报告
  3. 2022-2028年中国防臭袜行业投资分析及前景预测报告
  4. 2022-2028年中国塑料合成革的制造行业市场全景评估及发展趋势研究报告
  5. 2022-2028年中国农用塑料薄膜行业市场研究及前瞻分析报告
  6. 工作如果没有方法,光靠苦力是不行的
  7. 条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)
  8. 可以控制到多低(功率)?
  9. vue element 关闭当前tab 跳转到上一路由
  10. jenkins+ant+jmeter接口测试