在重写equals方法的时候为什么需要重写hashCode方法?
生活平静而美好。
今天聊一聊面试题 《在重写equals方法的时候为什么需要重写hashCode方法?》(equals方法与hashCode方法的区别与联系)
- 编程中经常会用到HashMap,HashSet等数据结构。
- 这个数据结构都是由键值对组成的,如果键值对的键是对象,程序会根据对象返回的 hashCode 来确定值所在的位置。
- 我们通常认为两个内容相同的对象是相等的,并通过重写 equals 方法来达到这个目的。
- 由于对象默认返回 hashCode 是对象的地址值,当我们把上面相等的对象作为 HashMap 的键的时候,程序会定位到两个不同的位置的值,这种结果其实是不合适的。
- 这也就是为什么我们在重写 equals 方法的时候,往往需要重写 hashCode,让相等的对象返回相同的 hashCode 的原因。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。