全面吃透JAVA Stream流操作,让代码更加的优雅
目录
一、Stream流 的介绍与概括:
1.1、Stream(流)是什么:
- Stream 流是 Java8 提供的新功能,是对集合对象功能的增强,能对集合对象进行各种非常便利、高效的聚合操作,或大批量数据操作。
- Stream 流以一种声明性方式处理数据集合,它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用fork/join并行方式来拆分任务和加速处理过程。
- Stream 流中间操作会再次返回一个流,所以我们可以链接多个中间操作;终端操作是对流操作的一个结束动作,一般返回 void或者一个非流的结果。
- Stream 流具有延迟执行特性,也就是说中间操作不会立即执行,只有调用终端操作的时候,流才会开始中间操作(遍历、映射、过滤等)。并且Stream流提供了并行操作方式,在使用并行计算方式时数据会被自动分解成多段然后并行处理,最后将结果汇总,极大提升程序运行效率。
上图!!!
IDEA中查看类继承关系图 https://juejin.cn/post/6875507654912344078
1.2、Stream(流)特点:Stream内部通过流水线(Pipline)的方式来实现的,基本思路就是顺着流水线尽可能执行更多的操作,从而避免多次迭代。
1、Stream流不存储数据:而是按照特定的规则对数据进行计算,一般会输出结果。源可以是数组、文件、集合、函数。流不是集合元素,
2、Stream 流不改变源数据:通常情况下会产生一个新的集合或一个值。
3、惰性求值,流在中间处理过程中,只是对操作进行了记录,并不会立即执行,需要等到执行终止操作的时候才会进行实际的计算。
1.3、Stream(流)使用步骤:
1、获取一个数据源(如List、Set、数组等)。
2、调用stream()方法获取数据流。
3、使用各种中间操作对数据流进行处理(如筛选、转换等)。
4、调用终端操作执行对数据流的最终处理(如聚合、收集结果等)。
1.4、Stream(流)的分类:
- 无状态: 指元素的处理不受之前元素的影响;
- 有状态: 有状态的操作是指当前元素的操作需要等所有元素处理完之后才能进行。
- 非短路操作: 指必须处理所有元素才能得到最终结果;
- 短路操作: 指遇到某些符合条件的元素就可以得到最终结果,如 A || B,只要A为true,则无需判断B的结果。
1.5、Stream(流)的管道操作类型都包含若干API方法,先列举下各个API方法的功能介绍。
-
开始管道:主要负责新建一个Stream流,或者基于现有的数组、List、Set、Map等集合类型对象创建出新的Stream流。
-
中间管道:负责对Stream进行处理操作,并返回一个新的Stream对象,中间管道操作可以进行叠加。
-
终止管道:顾名思义,通过终止管道操作之后,Stream流将会结束,最后可能会执行某些逻辑处理,或者是按照要求返回某些执行后的结果数据。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版