Java流(Stream)式编程-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
流式编程
Stream作为Java 8的一大亮点它专门针对集合的各种操作提供各种非常便利简单高效的API,Stream API主要是通过Lambda表达式完成极大的提高了程序的效率和可读性。
流式编程的概念基于函数式编程的思想旨在简化代码提高可读性和可维护性。
常见流创建方式
常见流的方法
流的操作方法一般分为获取流 操作流 结束流
操作流
map map 方法用于映射每个元素到对应的结果
filter filter 方法用于通过设置的条件过滤出元素。
skip skip方法用于跳过指定数量的流。
limit limit 方法用于获取指定数量的流。
sorted sorted 方法用于对流进行排序。
结束流
peek peek是一个中间操作方法它接受一个Consumer函数作为参数对流中的每个元素执行该函数。与forEach不同的是peek方法会返回一个新的流该流中的元素和原始流中的元素相同。
流的中间操作是惰性的如果一个流操作流程中只有中间操作没有终结操作那么这个流什么都不会做整个流程中会一直等到遇到终结操作操作才会真正的开始执行。
forEach forEach来迭代流中的每个数据
聚合操作reduce 和 collect
reduce和collect都是Stream API中用于聚合操作的方法它们可以将流中的元素进行汇总、计算和收集。
Collectors Collectors 类实现了很多归约操作例如将流转换成集合和聚合元素
匹配操作allMatch(所有)、anyMatch(至少一个) 和 noneMatch(没有一个)是否满足条件 (返回值 true/false)
count min max 统计操作 元素数量 最小值 最大值
查找操作
findFirst 返回流中第一个元素
findAny 返回流中任意一个元素
Stream 对象是一种一次性使用的对象它只能被消费一次。一旦对 Stream 执行了终止操作如收集结果、遍历元素Stream 就会被关闭后续无法再使用。
并行流
并行流是 Java 8 Stream API 中的一个特性。它可以将一个流的操作在多个线程上并行执行以提高处理大量数据时的性能。
parallel() 顺序流转换为并行流
使用并行流要注意线程安全问题
在某些操作中性能并不好(如: sorted)