Java 8 Stream 备忘单
基本流方法
发现者
匹配器
流修饰符
流特征器
最初发布于www.gunnargissel.com
流是处理集合中的对象的一种方式。
流允许人们直接说出他们最终想要得到什么。相比之下,命令式方法则要求人们直接说出如何收集他们最终想要得到的东西。
流还允许简单的多线程。
基本流方法
有一些控制流交互的基本方法。这些方法背后的基本思想是操作对象集合,以便只留下您需要的对象。
如果我必须选择使用 Stream 的必不可少的方法,我会说Map
、、Filter
和Collect
。
过滤器
过滤器采用,并仅留下为真的Predicate
值。Predicate
Map
Map 接受一个Function
,并将流中的值从一种类型转换为另一种类型
Sorted
Sorted 采用Comparator
,并根据 中指定的顺序对流中的值进行排序Comparator
。
CollectCollect
停止流并将流中的值放入某种类型中Collection
,比如List
。
toArraytoArray()
停止流并返回包含流中的元素的数组。
发现者
使用集合时,一个常见的任务是从流中获取元素。它们通常在Filter
and之后使用Map
,以确保找到的元素符合某些条件并且属于所需的类型。
findAny()findAny()
返回一个Optional
包含流中元素的对象(如果流为空,则返回空)。这里不遵循顺序,尤其是在并行流的情况下。
findFirst()findFirst()
返回一个Optional
包含流中第一个元素的数组(如果流为空,则返回空)。使用此方法时,顺序是被遵循的。
max(Comparator comparator)max
返回给定流的最大元素Comparator
min(Comparator comparator)min
返回给定流的最小元素Comparator
匹配器
另一个常见任务是判断对象是否满足某些给定条件。这些“匹配器”方法指示流中的对象是否全部、部分或全部满足给定条件。
allMatch(Predicate pred)
返回true
流中所有元素是否匹配Predicate
anyMatch(Predicate pred)
返回true
流中是否有任何元素与Predicate
noneMatch(Predicate pred)如果流中没有元素
与true
Predicate
流修饰符
有时,一个流可能并非完全“正确”。这些方法会创建一个与旧流略有不同的新流,这些新流可能具有不同的特征,例如不同的长度、不同的起始点,或者保证只包含唯一的对象。
distinct()创建一个仅包含不同元素(基于)的distinct()
新流.equals
limit(int maxSize)limit(maxSize)
通过将原始流截断为不长于 maxSize 来创建新流。
skip(long n)
跳过流的前 n 个元素,并使用其余元素创建一个新流
sorted()
创建一个新的流,其中的元素按照自然顺序排序
sorted(Comparator comparator)
创建一个新的流,其中元素按照Comparator
流特征器
使用集合时,另一个常见的任务是确定整个集合的一些特性。流 API 提供了一种方法来计算给定流的大小。
count()count()
计算流中元素的数量
如果你喜欢这个,请访问我的编程博客获取更多提示和技巧
致谢
感谢Don LaVange提供的溪流图片
文章来源:https://dev.to/monknomo/java-8-stream-cheatsheet--oad