Java8 Stream操作解析:清除重复数据与操作分类
需积分: 49 144 浏览量
更新于2024-08-09
收藏 807KB PDF 举报
"Java8之Stream的学习笔记,涵盖了Stream的获取、操作分类、实战应用以及Fork-Join机制"
在Java 8中,Stream API是一个重要的特性,它为处理集合数据提供了一种新方法,引入了函数式编程的元素。Stream API允许开发者以声明性方式处理数据,尤其在进行数据过滤、映射和聚合等操作时,能够简化代码并提高性能。
**Stream的操作分类**
Stream的操作主要分为两大类:
1. **Intermediate操作**:这些操作不会立即执行,而是构建一个新的Stream。例如,`filter()`、`map()`和`distinct()`都是Intermediate操作。它们对输入流进行某种转换,但不产生最终结果,而是返回一个新的Stream,供后续操作使用。由于 Intermediate 操作是惰性化的,它们会在Terminal操作执行时才开始实际计算。
2. **Terminal操作**:Terminal操作如`count()`、`collect()`和`forEach()`是流处理的终点,它们会消费掉Stream并生成一个结果或副作用。一旦执行了一个Terminal操作,Stream就无法再被使用,因此每个流只能有一个Terminal操作。
此外,还有一种**短路操作**(short-circuiting)的概念,它在处理无限大Stream时特别有用。短路操作可以在有限的时间内完成,即使源Stream是无限的。例如,`findFirst()`和`anyMatch()`就是短路的Terminal操作,它们不需要遍历整个Stream就能产生结果。
**Stream的获取**
Stream可以从多种数据源创建,包括:
- **From Collections**:通过调用集合类如List、Set、Map的`stream()`或`parallelStream()`方法。
- **From Arrays**:使用`Arrays.stream()`静态方法。
- **From Static Factory**:使用`Stream.of()`方法创建固定大小的Stream。
- **From Files**:使用`Files.lines()`或`Files.readAllBytes()`等方法读取文件内容。
- **Build By Yourself**:通过`Stream.builder()`创建自定义的Stream。
- **Others**:如通过I/O通道或生成器函数等其他途径。
**Fork-Join框架**
Fork-Join框架是Java 8并行计算的基础,它支持任务的分而治之(fork/join)策略。主要用于处理可以分解为更小子任务的问题,如快速排序算法。`ForkJoinPool`和`RecursiveTask`或`RecursiveAction`是其核心组件,可以用来实现并行计算,提升效率。
**Stream的操作实战**
Stream API提供了丰富的操作,如Intermediate的`filter()`用于过滤元素,`map()`用于转换元素,`distinct()`用于去除重复元素。Terminal操作如`reduce()`用于累积计算,`collect()`用于收集Stream到集合中,`forEach()`用于遍历并处理每个元素。
Java 8的Stream API和Lambda表达式结合,极大地改进了处理集合数据的方式,使得代码更加简洁、可读性强,同时也能充分利用多核处理器的性能,提升程序执行效率。在实际开发中,熟练掌握Stream API能帮助开发者编写出高效、优雅的代码。
2019-04-09 上传
2011-12-07 上传
2021-09-19 上传
点击了解资源详情
350 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
Davider_Wu
- 粉丝: 45
- 资源: 3887
最新资源
- Visual C++调试基础
- sql server2005基础教程
- Delphi Handbook 2009 All source
- 云计算360度(Cloud Computing)
- Flex体系架构剖析
- WebWork2开发指南PDF
- Globus toolkits 4教程
- C++ programming for Financial Engineers
- beyond software architecture.pdf
- Word处理长文档的技巧
- 毕业设计论文最终定稿
- 计算机外文翻译,文献综述
- 现代网络设计(opnet实验)
- 电脑故障速查参考手册~ 超全 新手必看
- MyEclipse JSF 快速入门中文版.pdf
- 网络工程师考试历年试题解析(2004-2007)