java8中stream流解决两个list合并问题

当我们遇到需要将两个list合并成一个list实体的时候,可以使用java8的stream流来解决,以下是我的一个小demo,可供大家参考学习。

 public ResultDto listBalancer(Integer pageIndex, Integer pageLimit, String userId, MidOsBalancerDto midOsBalancerDto) {
        List<MidOsBalancerDto> dtoList = new ArrayList<MidOsBalancerDto>();
        int code = 200;
        int count = 0;
        String msg = "查询成功";
        try {

            MidOsBalancerExample example = buildExample(midOsBalancerDto);
            count = iMidOsBalancerDao.total(example);

            List<MidOsBalancer> poList = new ArrayList<MidOsBalancer>();
            if (pageIndex != null && pageLimit != null) {
                Page page = PageBuilder.build(pageIndex, pageLimit);

                poList = iMidOsBalancerDao.find(example, page);
            } else {
                poList = iMidOsBalancerDao.find(example);
            }
            if (count > 0) {

                //获取该条件下的对象路由id
                List<String> groupIds = poList.stream().map(MidOsBalancer::getGroupId).collect(Collectors.toList());

                //循环遍历id查询对象路由信息
                MidOsPathExample pathExample = new MidOsPathExample();
                MidOsPathExample.Criteria criteria = pathExample.createCriteria();
                criteria.andIdIn(groupIds);
                List<MidOsPath> midOsPaths = iMidOsPathDao.find(pathExample);

                //获取所有该条件下的LV

                poList.forEach(midBalancer -> {
                    MidOsBalancerDto midOsBalancerDto1 = BeanCopyUtil.getDtoObject(MidOsBalancerDto.class, midBalancer, "loadCreteTime", "vipMask");
                    Integer vipMask = midBalancer.getVipMask();
                    String loadCreteTime = DateUtil.dateFormat(midBalancer.getLoadCreteTime());
                    midOsBalancerDto1.setLoadCreteTime(loadCreteTime);
                    midOsBalancerDto1.setVipMask(vipMask);
                    for (MidOsPath path : midOsPaths) {
                        if (path.getId().equals(midBalancer.getGroupId())) {
                            midOsBalancerDto1.setGroupName(path.getName());
                            midOsBalancerDto1.setGroupStatus(path.getStatus());

                            midOsBalancerDto1.setGroupCreate(DateUtil.dateFormat(path.getLoadCreateTime()));

                        }
                    }
                    dtoList.add(midOsBalancerDto1);
                });

            }

        } catch (Exception e) {
            code = 500;
            msg = "查询失败";
            logger.error("{}", e);
        }
        ResultDto result = ResultUtil.result(dtoList, code, count, msg);
        return result;
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值