java基础 equals和hashCode、HashMap

六眼飞鱼酱① 提交于 2020-01-22 20:05:06

我们知道equals和hashCode都是Object的方法,equals是比较对象是否相同的,默认的是比较地址值,hashCode是获取哈希码的,获取哈希码是有一套哈希算法的,具体没研究,每个版本的java都有些不一样。

equals和hashCode的关系更多的是一种约定,equals相同时,hashCode一定是相同的,equals不同时,hashCode也可能是相同的。所以才会有,重写equals方法一定要重写hashCode方法

hashCode是在HashMap中使用的,在hashMap是采用数组加链表的方式实现的,hashCode通过再hash然后能快速定位到数组的位置,然后再通过equals在链表中查找。说白了hashCode的存在就是为了提高查找效率。

Java中HashMap的实现原理

Java基础面试题 Object类中Hashcode 和 equals区别与联系是什么?

 

HashMap的源码需要好好研究一下,它用到了红黑树

Java源码解析——集合框架(五)——HashMap源码分析

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!