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

生活平静而美好。

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

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

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

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

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

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

你可能感兴趣的:(在重写equals方法的时候为什么需要重写hashCode方法?)