java基础 equals和hashCode、HashMap

我们知道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源码分析

你可能感兴趣的:(JAVA学习笔记,面试)