HashCode作用

http://c610367182.iteye.com/blog/1930676

以 Java.lang.Object 来理解,JVM 每 new 一个 Object, 它都会将这个 Object 丢到一个 Hash 哈希表中去,这样的话,下次做 Object 的比较或者取这个对象的时候,它会根据对象的 hashcode 再从 Hash 表中取这个对象。这样做的目的是提高取对象的效率。具体过程是这样:

  1. new Object(),JVM 根据这个对象的 Hashcode 值,放入到对应的 Hash 表对应的 Key 上,如果不同的对象确产生了相同的 hash 值,也就是发生了 Hash key 相同导致冲突的情况,那么就在这个 Hash key 的地方产生一个链表,将所有产生相同 hashcode 的对象放到这个单链表上去,串在一起。

  2. 比较两个对象的时候,首先根据他们的 hashcode 去 hash 表中找他的对象,当两个对象的 hashcode 相同,那么就是说他们这两个对象放在 Hash 表中的同一个 key 上,那么他们一定在这个 key 上的链表上。那么此时就只能根据 Object 的 equal 方法来比较这个对象是否 equal。当两个对象的 hashcode 不同的话,肯定他们不能 equal.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 9,191评论 0 11
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,443评论 0 3
  • 找题库
    VanessaC阅读 2,806评论 0 0
  • “阿甘,你在空间发的那条什么囧游的动态是咋回事!”我一边刷手机一边爬上床打算午休,突然看见一条高中同学发在空间里的...
    书生96阅读 2,806评论 0 0
  • 今天没有按着时间节点去完成计划,看书计划也没完成,由于自己没有控制时间,和销售总监的谈话大大延时,造成后面事情没...
    姚常春阅读 1,324评论 0 1

友情链接更多精彩内容