生活平静而美好。
今天聊一聊面试题 《在重写equals方法的时候为什么需要重写hashCode方法?》(equals方法与hashCode方法的区别与联系)
1. 编程中经常会用到HashMap,HashSet等数据结构。
2. 这个数据结构都是由键值对组成的,如果键值对的键是对象,程序会根据对象返回的 hashCode 来确定值所在的位置。
3. 我们通常认为两个内容相同的对象是相等的,并通过重写 equals 方法来达到这个目的。
4. 由于对象默认返回 hashCode 是对象的地址值,当我们把上面相等的对象作为 HashMap 的键的时候,程序会定位到两个不同的位置的值,这种结果其实是不合适的。
5. 这也就是为什么我们在重写 equals 方法的时候,往往需要重写 hashCode,让相等的对象返回相同的 hashCode 的原因。
网友评论