业务场景:
在应用配置的时候需要给应用配置岗位信息,此时应用岗位可能会有重复的问题!虽然前端会进行校验,但是作为一个合格的后端我是不相信前端的!
使用hashset去重:
源码如上,可以看到hashSet的add方法调用的是HashMap的put的方法,而put方法返回的是上一个value值,把这个值是否为空作为方法返回!这样根据add的返回值就可以判断是否重复!
但是每次调用的时候,多个不同岗位只有第一个返回true,之后全部返回false!此时严重怀疑自己理解错add方法了,分析原因是自己引用了一个类,这个类是数据库操作类,重写了hasdCode和equals方法,根据id来判断是否重复(对应数据库的自增主键)!由于现在每次的id都是null,所以就判断为同一个对象了
重写hashCode和equals
问题找到了,那我就根据职位id来重写hashCode和equals了,这边的业务是只要职位id不同就可以判断不是同一条数据了