Java 比较两个List对象差集(根据某一值)

 很多都是比较List<String>的,和自身业务不符,jdk1.8 新特性强大的Stream API  ,具体是什么方法,什么作用自行百度,复制粘贴可以解决问题就OK+

 复制粘贴即可用,简单修改AvoidHouse 对象类型、getHoseCode 获取比较的键值就可以了。

/**
     * 互相比较两个List 我的业务需要,根据自己需要进行修改
     * @param oldList    原有数据
     * @param newList    新数据
     *原数据减新数据为消除
     *新数据减上一期为新增
     * @return 本次比较新增的数量和消除的数量
     */
    private JSONObject com(List<AvoidHouse> oldList,List<AvoidHouse> newList){

        JSONObject data = new JSONObject();
        
        // 分别拿到原有数据和新数据List 中的比较键值   我得是hoseCode   根据code对比两个List 数据中是否互相包含
        List<String> avoidHouseOldListCode = oldList.stream().map(AvoidHouse::getHoseCode).collect(Collectors.toList()); 
        List<String> avoidHouseNewListCode = newList.stream().map(AvoidHouse::getHoseCode).collect(Collectors.toList());

        
        
        
        List<AvoidHouse> addHouse = newList.stream().filter(house -> !avoidHouseOldListCode.contains(house.getHoseCode())).collect(Collectors.toList());
        List<AvoidHouse> remHouse = oldList.stream().filter(house -> !avoidHouseNewListCode.contains(house.getHoseCode())).collect(Collectors.toList());

        data.put("addnum",addHouse.size());
        data.put("remnum",remHouse.size());
        return data;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值