equals为什么要重写hashcode?

 我来答
知识高能小能手
高能答主

2021-09-10 · 生活阅读帮帮帮小能手
知识高能小能手
采纳数:95 获赞数:28376

向TA提问 私信TA
展开全部

如果你重载了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样。

这样,当你用其中的一个作为键保存到hashMap、hasoTable或hashSet中,再以“相等的”找另一个作为键值去查找他们的时候,则根本找不到。

如果两个对象的堆内存地址是相同的,就表示“两个”对象实际上是同一个对象,因此这两个对象的内容必然相同。

(就比如,你有一个“iphoneX”,但平时你又喜欢把它叫做“手机”。那么对你而言,“iphoneX”和“手机”实际是同一个东西)。这种情况下,“iphoneX”和“手机”的内容必然相同,所以直接将比较的结果 返回true即可。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式