java中为什么重写equals方法一定要重写hashcode方法

本文解析了在重写equals方法时同步重写hashCode的重要性。避免因默认Object类的hashCode导致的散列冲突,确保对象相等时hashCode一致,提高hash类数据集合的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 因为如果我们在重写equals方法的同时,不对hashcode方法进行重写的话,默认地还是会使用Object类自带的hashcode方法,这样就会出现在某些情况下,明明两个对象的equals方法判断相等了,但是它们的hashcode居然不一样,这是不符合规范的。对于hashcode,Java中有如下规定:
    两个对象相等,hashcode一定相等
    两个对象不等,hashcode不一定不等
    hashcode相等,两个对象不一定相等
    hashcode不等,两个对象一定不等
  2. hashcode经常用于散列数据的快速存取,例如在使用hash类数据集合时,都是先根据存储的对象的hashcode值去判断对象是否相同,因此如果不重写hashcode方法的话,会导致判断对象相同的时候,明明equals方法判断相等了,hashcode却判断不相等,就会造成在不同的位置中可以存放两个相同的对象,这就不合理了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值