两个list比较其中的对象,返回新增删除修改内容

最近新的需求,涉及一个产品新老版本的数据进行比较,需要展示出新增,删除,修改的数据。举个例子:原本a班级有小明:1号,5岁;小红:2号,6岁.。                  现在a班新来了插班生小绿:3号,7岁,小明被劝退了,小红的年龄登记错了,改成7岁。那老版本班级:1号-小明,2号-小红新版本班级:2号-小红,3
摘要由CSDN通过智能技术生成

最近新的需求,涉及一个产品新老版本的数据进行比较,需要展示出新增,删除,修改的数据。
举个例子:原本a班级有小明:1号,5岁;小红:2号,6岁.。
                  现在a班新来了插班生小绿:3号,7岁,小明被劝退了,小红的年龄登记错了,改成7岁。
那老版本班级:1号-小明,2号-小红
新版本班级:2号-小红,3号-小绿
那新版本相较于老版本的变更为:

新增-3号,小绿
删除-1号,小明
修改-2号,小红

思路如下
1.把list转换成oldMapnewMap分别为新老版本的学生数据,key存放的是学号,value存放的是对象。
2.新建List,存放新老版本的学号,此时list内数据为[1,2,2,3],新增及修改的学号1,3只出现一次。
3.将List转换成一个countMap,key存放的是学号,value存放的是出现的次数
4.遍历countMap,如果value等于1(那就是新增或者删除)根据key,去oldMap和newMap中查询学生数据,如果在oldMap存在那就是删除了,如果newMap存在那就是新增了。如果value等于2,再去判断年龄是否修改,如果修改了那就是修改。

上代码

private void judgmentHospital(newList, oldList, arrayList){
   
		/*新老学生list->map*/
        Map<Long, Student> newCodeMap = newList.stream().collect(Collectors.toMap(Student
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值