【Java面试宝典(Java核心知识点)】--005 hashcode()与equals()之间的关系

@TOC

HashCode介绍

  • hashCode()的作用获取哈希码,也称为散列码
  • 它实际上是返回一个int整数
  • 这个哈希码的作用
    • 确定该对象在哈希表中的索引位置
  • hashCode()定义在JDK的Object.java中,Java中的任何类都包含有hashCode()函数
  • 散列表存储的是键值对(key-value),特点是
    • 能根据“”快速的检索出对应的“”。
    • 这其中就利用到了散列码

以“HashSet如何检查重复”为例子来说明为什么要有hashCode

  • 对象加入HashSet时,HashSet会计算对象的hashcode值来判断对象加入的位置,看该位置是否有值。
    • 如果没有,HashSet会假设对象没有重复出现,
    • 如果发现有值,会调用equals()方法来检查两个对象是否真的相同。
      • 如果两者相同,HashSet就不会让其操作成功,
      • 如果不同,则重新散列到其他位置
  • 这样就大大减少了equals的次数,相应就大大提高了执行速度。

注意

● 如果两个对象相等,则hashcode一定也是相同的
两个对象的hashcode值相等,他们不一定是相等的
● 两个对象相等,对两个对象分别调用equals方法都返回true
● 因此,equals方法被覆盖过,则hashCode方法也必须被覆盖
● hashCode()的默认行为是对堆上的对象产生独特值,如果没有重写hashCode(),则该class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)

为了保持各平台账号一致性,个人ip又回归到了软件柠檬,希望不会打扰到大家!
如果对你有帮助的话,可以点个赞和关注支持一下,后面会持续分享暑期实习,春秋招,简历制作,西交考研等话题高质量干货!

b站视频号【软件柠檬】以后会不定期分享计算机领域基础知识,求职干货,为大家助力实习和春秋招offer,公众号【软件柠檬】也会不定期更新优质内容,分享优质干货资料,希望能够帮助到大家~
❤️这里是 软件柠檬, 让我们一起学习进步~❤️

你可能感兴趣的:(面试问题汇总,java,面试,hashcode,equals,hash)