Java stream判断两个相同对象集合中的部分字段的相同或者不同并作出处理,重写equals和hash方法

本文介绍了如何重写HjHsCode类的equals和hashCode方法,以实现对象间的精确比较,并利用Stream处理技术进行数据集的高效操作,如找出新增、删除或需要更新的数据。

首先需要重写equals方法和hash方法

 @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        HjHsCode hjHsCode = (HjHsCode) o;
        return Objects.equals(hsCode, hjHsCode.hsCode) &&
                Objects.equals(cnName, hjHsCode.cnName) &&
                Objects.equals(enName, hjHsCode.enName) &&
                Objects.equals(unit, hjHsCode.unit) &&
                Objects.equals(unit2, hjHsCode.unit2) &&
                Objects.equals(controlMa, hjHsCode.controlMa) &&
                Objects.equals(ciqMa, hjHsCode.ciqMa) &&
                Objects.equals(ggModel, hjHsCode.ggModel) &&
                Objects.equals(imLowRate, hjHsCode.imLowRate) &&
                Objects.equals(imNormalRate, hjHsCode.imNormalRate) &&
                Objects.equals(imTempRate, hjHsCode.imTempRate) &&
                Objects.equals(imTaxRate, hjHsCode.imTaxRate) &&
                Objects.equals(exReturnRate, hjHsCode.exReturnRate) &&
                Objects.equals(exNormalRate, hjHsCode.exNormalRate) &&
                Objects.equals(exTempRate, hjHsCode.exTempRate) &&
                Objects.equals(exSpecialRate, hjHsCode.exSpecialRate);
    }

    @Override
    public int hashCode() {
        return Objects.hash(hsCode, cnName, enName, unit, unit2, controlMa, ciqMa, ggModel, imLowRate, imNormalRate, imTempRate, imTaxRate, exReturnRate, exNormalRate, exTempRate, exSpecialRate);
    }

重写的时候需要选自己需要的比较的字段
idea有自己生成的办法
在这里插入图片描述

在这里插入图片描述
生成的时候选择自己需要的字段就可以了

如果你喜欢用stream比较请参考一下方法,用stream显得比较高大上,所以我一直在学习。

List<HjHsCode> oldHsCode, List<HjHsCode> hsCodes

   // 差集 (oldHsCode- hsCodes)  就是别人接口删除了,数据需要删除的。
         List<HjHsCode> reduce1 = oldHsCode.parallelStream().filter(item ->!hsCodes.contains(item)).collect(Collectors.toList());


   // 差集 (新数据和老数据对比)------------服务器数据和本地数据不一致的,需要修改或者新增的   (hsCodes-oldHsCode)
        List<HjHsCode> reduce = hsCodes.parallelStream().filter(item -> !oldHsCode.contains(item)).collect(Collectors.toList());

contains 会自动调用重写的equals

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mcxiaochi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值