在重写equals方法的时候为什么需要重写hashCode方法?

生活平静而美好。

今天聊一聊面试题 《在重写equals方法的时候为什么需要重写hashCode方法?》(equals方法与hashCode方法的区别与联系)

1. 编程中经常会用到HashMap,HashSet等数据结构。

2. 这个数据结构都是由键值对组成的,如果键值对的键是对象,程序会根据对象返回的 hashCode 来确定值所在的位置。

3. 我们通常认为两个内容相同的对象是相等的,并通过重写 equals 方法来达到这个目的。

4. 由于对象默认返回 hashCode 是对象的地址值,当我们把上面相等的对象作为 HashMap 的键的时候,程序会定位到两个不同的位置的值,这种结果其实是不合适的。

5. 这也就是为什么我们在重写 equals 方法的时候,往往需要重写 hashCode,让相等的对象返回相同的 hashCode 的原因。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。