hashset踩坑

探讨在应用配置过程中,如何有效解决岗位信息重复问题。通过使用HashSet进行去重,发现因对象引用问题导致去重失效。深入分析后,通过重写hashCode和equals方法,根据岗位ID成功实现数据去重。

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

业务场景:

在应用配置的时候需要给应用配置岗位信息,此时应用岗位可能会有重复的问题!虽然前端会进行校验,但是作为一个合格的后端我是不相信前端的!

使用hashset去重:

源码如上,可以看到hashSet的add方法调用的是HashMap的put的方法,而put方法返回的是上一个value值,把这个值是否为空作为方法返回!这样根据add的返回值就可以判断是否重复!

但是每次调用的时候,多个不同岗位只有第一个返回true,之后全部返回false!此时严重怀疑自己理解错add方法了,分析原因是自己引用了一个类,这个类是数据库操作类,重写了hasdCode和equals方法,根据id来判断是否重复(对应数据库的自增主键)!由于现在每次的id都是null,所以就判断为同一个对象了

重写hashCode和equals

问题找到了,那我就根据职位id来重写hashCode和equals了,这边的业务是只要职位id不同就可以判断不是同一条数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值