equals为什么要重写hashcode?
1个回答
展开全部
如果你重载了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样。
这样,当你用其中的一个作为键保存到hashMap、hasoTable或hashSet中,再以“相等的”找另一个作为键值去查找他们的时候,则根本找不到。
如果两个对象的堆内存地址是相同的,就表示“两个”对象实际上是同一个对象,因此这两个对象的内容必然相同。
(就比如,你有一个“iphoneX”,但平时你又喜欢把它叫做“手机”。那么对你而言,“iphoneX”和“手机”实际是同一个东西)。这种情况下,“iphoneX”和“手机”的内容必然相同,所以直接将比较的结果 返回true即可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询