java 合并流_Java Stream 流实现合并操作示例
本文实例讲述了Java Stream 流实现合并操作。分享给大家供大家参考,具体如下:
1. 前言
Java Stream Api提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作。今天我们来看看如何合并 Stream 流。
2. Stream 流的合并
Stream 流合并的前提是元素的类型能够一致。
2.1 concat
最简单合并流的方法是通过 Stream.concat() 静态方法:
Stream stream = Stream.of(1, 2, 3);
Stream another = Stream.of(4, 5, 6);
Stream concat = Stream.concat(stream, another);
List collect = concat.collect(Collectors.toList());
List expected = Lists.list(1, 2, 3, 4, 5, 6);
Assertions.assertIterableEquals(expected, collect);
这种合并是将两个流一前一后进行拼接:
2.2 多个流的合并
多个流的合并我们也可以使用上面的方式进行“套娃操作”:
Stream.concat(Stream.concat(stream, another), more);
你可以一层一层继续套下去,如果需要合并的流多了,看上去不是很清晰。
我之前介绍过一个Stream 的 flatmap 操作,它的大致流程可以参考里面的这一张图:
因此我们可以通过 flatmap 进行实现合并多个流:
Stream stream = Stream.of(1, 2, 3);
Stream another = Stream.of(4, 5, 6);
Stream third = Stream.of(7, 8, 9);
Stream more = Stream.of(0);
Stream concat = Stream.of(stream,another,third,more).
flatMap(integerStream -> integerStream);
List collect = concat.collect(Collectors.toList());
List expected = Lists.list(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
Assertions.assertIterableEquals(expected, collect);
这种方式是先将多个流作为元素生成一个类型为 Stream> 的流,然后进行 flatmap 平铺操作合并。
2.3 第三方库
有很多第三方的强化库 StreamEx 、Jooλ 都可以进行合并操作。另外反应式编程库 Reactor 3 也可以将 Stream 流合并为反应流,在某些场景下可能会有用。这里演示一下:
List block = Flux.fromStream(stream)
.mergeWith(Flux.fromStream(another))
.collectList()
.block();
3. 总结
如果你经常使用 Java Stream Api ,合并 Stream 流是经常遇到的操作。
希望本文所述对大家java程序设计有所帮助。
java 合并流_Java Stream 流实现合并操作示例相关推荐
- java 合并流_Java Stream 流如何进行合并操作
1. 前言 Java Stream Api 提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作.今天我们来看看如何合并 Stream 流. 2. Stream 流的合并 ...
- Java合并流实现简单的文件合并示例
合并流: SequenceInputStream: 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,以此类推,知道到达包含的最 ...
- java合并流与文件的分割合并示例
合并流: SequenceInputStream表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个 ...
- java 合并流_使用流执行聚合
本系列的 第 1 部分 介绍了 Java SE 8 中添加的 java.util.stream 库.第二期文章将重点介绍 Streams 库的一个最重要的.灵活的方面 - 聚合和汇总数据的能力. &q ...
- java质因数算法_Java实现的质因数分解操作示例【基于递归算法】
本文实例讲述了Java实现的质因数分解操作.分享给大家供大家参考,具体如下: 这里演示java通过递归实现质因数分解,代码如下: import java.util.Scanner; public cl ...
- java实现对大文件切割下载_Java实现大文件的切割与合并操作示例
Java实现大文件的切割与合并操作示例 发布时间:2020-09-27 02:25:08 来源:脚本之家 阅读:99 作者:HiBoyljw 本文实例讲述了Java实现大文件的切割与合并操作.分享给大 ...
- java 两个stream合并_Java Stream 流如何进行合并操作
1. 前言 Java Stream Api 提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作.今天我们来看看如何合并 Stream 流. 2. Stream 流的合并 ...
- java 新特性之 stream 流
java 新特性之 stream 流 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. 这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在 ...
- Java中的Stream流以及收集操作
一.Stream流的生成方式 1.Stream流的使用: <1>:生成流:通过数据源(集合.数组等)生成流 <2>:中间操作:一个流后面可以跟随零个或多个中间操作,其目的主要是 ...
最新文章
- PHP URL处理关键函数parse_url、parse_str与http_build_query
- 烂泥:学习Nagios(三): NRPE安装及配置
- 为什么接口中要允许添加默认方法?
- 安装phpredis扩展以及phpRedisAdmin工具
- php连接plc,PLC 几种常见的连接口和通讯协议
- mPaaS 月度小报 | 3月发生的大事件
- 开源免费的.NET图像即时处理的组件ImageProcessor
- 有问有答 | Storm技术内幕与实践精华问答
- Haproxy基于ACL做访问控制
- Python 中的黑暗角落(二):生成器协程的调度问题
- 滤波ad毛刺 c语言算法,Σ-Δ型ADC AD7124和AD717x的后置/增强型滤波器
- underscore.js 964 --- 1103行
- 已解决IndexError: list index out of range
- 云和恩墨数据库MogDB荣获2021年度IT168最佳创新产品奖
- 用汇编语言编程的计算机
- 今日金融词汇---BP
- 歌星大奖赛,评分系统
- freemarker/ftl模板/导出doc 单元格合并注意事项(一)
- 移动端测试-1-Android sdk的安装
- 机器视觉之图像预处理
热门文章
- matlab实现双边滤波_【他山之石】pytorch 实现双边滤波
- 没有bug队——加贝——Python 练习实例 9,10
- java7 nio2 新特性_JDK7新特性,你知道几个?
- 怎么从某个div跳转到另一个_另一个伊甸伊丝卡怎么样 伊丝卡使用攻略_
- ranger管mysql_添加Kafka的Ranger访问权限策略
- pads中如何设置等长_如何在SQL Server中设置扩展,监控系统性能
- docker 删除包含关键字的镜像_30分钟带你轻松掌握Docker原理
- 前端校验和后端校验区别
- 【Python】random模块生成多种类型随机数
- 【测试工具】在linux测试环境访问禅道数据库