当我们遇到需要将两个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) {//获取该条件下的对象路由idList<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);//获取所有该条件下的LVpoList.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;}

java8中stream流解决两个list合并问题相关推荐

  1. Java8中Stream流对集合操作

    java8中Stream流引入函数式编程思想,主要配合各种接口.lambda表达式.方法引用等方式,为集合的遍历.过滤.映射等提供非常"优雅"的操作方式. Student.java ...

  2. Java8的 Stream 流的各种用法

    Java8 的 Stream 流的各种用法 什么是Stream 1. Stream可以由数组或集合创建,对流的操作分为两种 2. Stream的特性 3. Stream可以通过集合数组创建 4. st ...

  3. Java8特性 stream流常用方法

    Java8特性 stream流常用方法 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方 ...

  4. Java8种Stream流相关操作——集合的筛选、归约、分组、聚合

    过滤.筛选   filter skip /*** 过滤 筛选*/@Testpublic void test2(){List<String> list = Arrays.asList(&qu ...

  5. java8中的流(Stream)

    流式编程爱 撸码就是快,流式编程好 代码传家宝 Stream API 概念: Stream 流处理,首先要澄清的是 java8 中的 Stream 与 I/O 流 InputStream 和 Outp ...

  6. Java8中的流操作-基本使用性能测试

    一.流(Stream)简介 流是 Java8 中 API 的新成员,它允许你以声明式的方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).这有点儿像是我们操作数据库一样,例如我想要查询出热 ...

  7. Java8 的 Stream 流式操作之王者归来

    相对于Java8之前的Java的相关操作简直是天差地别,Java8 的流式操作的出现,也很大程度上改变了开发者对于Java的繁琐的操作的印象,从此,Java也走向了函数式编程的道路! 1 流的创建 1 ...

  8. Java8中stream()操作toMap()时Duplicate key问题解决

    问题描述: 最近使用Java8中Steam()流进行tomap转换编程时,遇到以下错误 java.lang.IllegalStateException: Duplicate key bbbat jav ...

  9. java中Stream流

    一 概述 数据渠道.管道,用于操作数据源(集合.数组等)所生成的元素序列. 集合讲的是数据,流讲的是计算 即一组用来处理数组,集合的API. 二 Stream特点 1 Stream 不是数据结构,没有 ...

最新文章

  1. android获取手机通讯录
  2. IT项目管理总结:第六章 项目时间管理
  3. boost::mp11::mp_nth_element_q相关用法的测试程序
  4. C++的查看指针指向空间的所在的区域(是堆还是栈或者静态)和大小
  5. 京东云端到端多媒体关键技术揭秘
  6. 本地缓存需要高时效性怎么办_详解微信小程序缓存--缓存时效性
  7. Build 2018,给你带来全新的开发者体验, .NET Core 3.0带来桌面支持
  8. Java提高篇 —— Java三大特性之继承
  9. Gazebo加载模型时黑屏
  10. 【es】 check-rollover-ready read index [alinas-lcc] is not the wtiter index for alians [index-xx]
  11. 用Javascript实现Repeater
  12. Powerdesigner概念模型并将概念模型转换成物理模型
  13. 字节架构师发布“绝版”Java并发实现原理剖析JDK源码
  14. 在键盘上输入两个int型数据,比较其大小,并输出其中较小的数
  15. 中国共享经济行业前瞻及投资战略规划评估分析报告2022-2028年版
  16. idea修改背景颜色|护眼色|项目栏背景修改
  17. NGINX的架构(译)
  18. ViewPager+Fragment刷新更新Fragment
  19. 如何使用hugo搭建个人博客(五):添加站内搜索(gcse)
  20. 读了冯唐老师的成事心法

热门文章

  1. 创建Excel:基于POI+注解实现
  2. 荔枝派zero运行linux,荔枝派Zero: 5分钟DIY一个迷你笔记本电脑
  3. 做社群运营,你复盘了吗?
  4. 小程序常见的问题你一定遇到过!
  5. 2018年天梯赛-全国总决赛
  6. 使用腾讯企业邮箱配置免费域名邮箱
  7. 一招搞定小白最头疼的数据大屏配色问题!
  8. 25 个精彩的 HTML 5 教程
  9. Springboot+Jwt+vue的水果销售系统
  10. 纯css美化单选与复选框