举个例子, 最典型的例子就是字典, 如果想要在字典中查找"按"字, 通常会根据拼音 an 去查找拼音索引(当然也可以是偏旁索引), 然后找到 ti 在字典中的位置, 得到第一个拼音为 an 的字 "安"...= key2, 但f(key1)=f(key2).
key 为值, f(key)计算得出数组中存储地址, 这样就会出现两个元素的地址相同的情况....试想如下场景, 如果传入的key对象重写了equals方法却没有重写hashCode, 而恰巧此对象定位到这个数组位置, 如果仅仅用equals判断可能是相等的, 但其hashCode和当前对象不一致,...这种情况, 根据Object的hashCode的约定, 不能返回当前对象, 而应该返回null....重写equals方法要同时重写hashCode方法
为什么重写equals时也要同时重写hashCode? 下面举个小例子:
?