- 将流转化为一个数组
toArray()
toArray(generator)
该方法会将元素保存在generator中 , 而不是创建一个新的并返回
- 在每个流元素上应用某个终结操作
forEach(Consumer)
在每个元素上调用Consumer方法forEachOrdered(Consumer)
该版本确保对元素的操作顺序是原始的流顺序
- 收集操作
collect(Collector)
相当复杂的一个方法,可以将所有元素存入我们给出的Collector容器中 。
- 本方法主要复杂在,我们实际上可以使用
java.util.stream.Collectors
文档中相当多的对象,而且其中有一部分很复杂比如如果我们希望放入一个TreeSet
中使它们总是有序,那么我们可以使用Collectors.toCollection(TreeSet::new)
来创建该容器并应用
- 本方法主要复杂在,我们实际上可以使用
collect(Supplier, BiConsumer, BiConsumer)
- 在极小情况下,我们无法从
Collectors
类中找到我们想要的处理容器,那么就需要第二个方法
- 在极小情况下,我们无法从
- 组合所有的流元素
reduce(BinaryOperator)
组合所有元素,组合的方法就是参数方法reduce(identity, BinaryOperator)
以identity为初始值组合所有元素,方法为第二个参数reduce(identity, BiFunction, BinaryOperator)
复杂,未作介绍
- 匹配,都是根据Predicate返回一个布尔值
allMatch(Predicate)
anyMatch(Predicate)
noneMatch(Predicate)
- 选择一个元素
findFirst()
返回一个包含流中第一个元素的Optional
对象,若流中没有元素即返回Optional.empty
findAny()
返回一个包含流中任意一个元素的Optional
对象 , 若流中没有元素则为Optional.empty
- 不过需要注意的是,该方法对于非并行的流似乎总是会选择流中的第一个元素,如果是并行的则随机
- 获取流相关的信息
count()
计算流中元素数量max(Comparator)
通过Comaprator获取流中最大的元素min(Comparator)
通过Comparator获取流中最小的元素- 如果是数值化的流,除了上面这些,还有以下方法
average()
获得平均值sum()
获得累加值summaryStatics()
返回可能有用的摘要数据,基本没什么用
推荐阅读
- 2022,一个Java程序猿的外设配置
- 2022,一个Java程序猿的装机配置
- Java 多线程写zip文件遇到的错误 write beyond end of stream!
- 1 JAVA语言学习-面向对象
- Java 19 新功能介绍
- Java线程未捕获异常处理 UncaughtExceptionHandler
- 死磕面试系列,Java到底是值传递还是引用传递?
- 【Java复健指南09】项目练习全解--房屋出租系统
- Java集合精选常见面试题
- React 函数组件