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) {//获取该条件下的对象路由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合并问题相关推荐
- Java8中Stream流对集合操作
java8中Stream流引入函数式编程思想,主要配合各种接口.lambda表达式.方法引用等方式,为集合的遍历.过滤.映射等提供非常"优雅"的操作方式. Student.java ...
- Java8的 Stream 流的各种用法
Java8 的 Stream 流的各种用法 什么是Stream 1. Stream可以由数组或集合创建,对流的操作分为两种 2. Stream的特性 3. Stream可以通过集合数组创建 4. st ...
- Java8特性 stream流常用方法
Java8特性 stream流常用方法 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方 ...
- Java8种Stream流相关操作——集合的筛选、归约、分组、聚合
过滤.筛选 filter skip /*** 过滤 筛选*/@Testpublic void test2(){List<String> list = Arrays.asList(&qu ...
- java8中的流(Stream)
流式编程爱 撸码就是快,流式编程好 代码传家宝 Stream API 概念: Stream 流处理,首先要澄清的是 java8 中的 Stream 与 I/O 流 InputStream 和 Outp ...
- Java8中的流操作-基本使用性能测试
一.流(Stream)简介 流是 Java8 中 API 的新成员,它允许你以声明式的方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).这有点儿像是我们操作数据库一样,例如我想要查询出热 ...
- Java8 的 Stream 流式操作之王者归来
相对于Java8之前的Java的相关操作简直是天差地别,Java8 的流式操作的出现,也很大程度上改变了开发者对于Java的繁琐的操作的印象,从此,Java也走向了函数式编程的道路! 1 流的创建 1 ...
- Java8中stream()操作toMap()时Duplicate key问题解决
问题描述: 最近使用Java8中Steam()流进行tomap转换编程时,遇到以下错误 java.lang.IllegalStateException: Duplicate key bbbat jav ...
- java中Stream流
一 概述 数据渠道.管道,用于操作数据源(集合.数组等)所生成的元素序列. 集合讲的是数据,流讲的是计算 即一组用来处理数组,集合的API. 二 Stream特点 1 Stream 不是数据结构,没有 ...
最新文章
- android获取手机通讯录
- IT项目管理总结:第六章 项目时间管理
- boost::mp11::mp_nth_element_q相关用法的测试程序
- C++的查看指针指向空间的所在的区域(是堆还是栈或者静态)和大小
- 京东云端到端多媒体关键技术揭秘
- 本地缓存需要高时效性怎么办_详解微信小程序缓存--缓存时效性
- Build 2018,给你带来全新的开发者体验, .NET Core 3.0带来桌面支持
- Java提高篇 —— Java三大特性之继承
- Gazebo加载模型时黑屏
- 【es】 check-rollover-ready read index [alinas-lcc] is not the wtiter index for alians [index-xx]
- 用Javascript实现Repeater
- Powerdesigner概念模型并将概念模型转换成物理模型
- 字节架构师发布“绝版”Java并发实现原理剖析JDK源码
- 在键盘上输入两个int型数据,比较其大小,并输出其中较小的数
- 中国共享经济行业前瞻及投资战略规划评估分析报告2022-2028年版
- idea修改背景颜色|护眼色|项目栏背景修改
- NGINX的架构(译)
- ViewPager+Fragment刷新更新Fragment
- 如何使用hugo搭建个人博客(五):添加站内搜索(gcse)
- 读了冯唐老师的成事心法