对象去重(对象多了,有一个就够了)

关于对象去重的一点感觉
在是实际的开发过程中,我们的list集合里面或者set里面会有存放多个数据,并且数据的内容不仅仅在是学习中的数据了
!他可以是对象,也可以是基本的数据类型,但是呢,我们的项目要求的就不一样了,使用set去重的话,对对象是没有用的,然后呢?怎么办
哥哥教你----------
因为对象之间是不能有两个一模一样的数据的,就算他们的属性值一样,他的栈堆地址也是不一样的,通过set或者map以及list,我们都不行去重对象,但是如果你会has的话,重写他们的equals和hashcode的话,那么你就会进行对象去重了!
说了一堆,不瞎掰了,给你上干果

重写equals方法代码在这里哦:
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    YlHlJlLinkVo that = (YlHlJlLinkVo) o;
    return Objects.equals(id, that.id) &&
            Objects.equals(NAME, that.NAME) &&
            Objects.equals(CRAD_ID, that.CRAD_ID) &&
            Objects.equals(SERVICE_ITEM, that.SERVICE_ITEM) &&
            Objects.equals(SERVICE_DATE, that.SERVICE_DATE) &&
            Objects.equals(NURSE, that.NURSE) &&
            Objects.equals(hlId, that.hlId) &&
            Objects.equals(rzyrId, that.rzyrId) &&
            Objects.equals(hlDate, that.hlDate) &&
            Objects.equals(hlNr, that.hlNr);
}

我这里的代码是根据对象的属性进行区分的,只要有一个不同,那么他们这两个对象就是不同的,大家可以根据自己的需求进行添加减少对象区分的条件

重写hashcode的方法在这呢:诺
@Override
    public int hashCode() {
        return Objects.hash(id, NAME, CRAD_ID, SERVICE_ITEM, SERVICE_DATE, NURSE, hlId, rzyrId, hlDate, hlNr);
    }

我这的hashcode是根据对象的所有属性进行区分,有一个不同就视为不是同一个对象,也可以进比较身份证号啊,姓名啊,进行区分

我这也给你写一个根据姓名进行区别的hashcode吧

 public int hashCode() {
         String in = name;
         return in.hashCode();
 }

告诉你一个秘密,如果你用的是idea的话,哈哈,我们可以通过快捷键进行自动重写equals和hashcode哦,快捷键是:alt+insert

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值