在重写 equals 办法的时候为什么须要重写 hashCode 办法?
生存平静而美妙。
明天聊一聊面试题《在重写 equals 办法的时候为什么须要重写 hashCode 办法?》(equals 办法与 hashCode 办法的区别与分割)
- 编程中常常会用到 HashMap,HashSet 等数据结构。
- 这个数据结构都是由键值对组成的,如果键值对的键是对象,程序会依据对象返回的 hashCode 来确定值所在的地位。
- 咱们通常认为两个内容雷同的对象是相等的,并通过重写 equals 办法来达到这个目标。
- 因为对象默认返回 hashCode 是对象的地址值,当咱们把下面相等的对象作为 HashMap 的键的时候,程序会定位到两个不同的地位的值,这种后果其实是不适合的。
- 这也就是为什么咱们在重写 equals 办法的时候,往往须要重写 hashCode,让相等的对象返回雷同的 hashCode 的起因。