流(Stream)是使用集合中对象的一种方式。
流(Stream)还能轻易实现简单的多线程。
基础流方法
如果我必须选择使用Stream的方法,我一定会用Map,Filter和Collect。
Filter
Filter接受一个Predicate,并且仅保留该Predicate为真的值。
Map
Map接受一个Function,并将流中的值从一种类型转换为另一种类型
Sorted
Sorted使用一个比较器,并根据比较器中指定的顺序对流中的值进行排序。
Collect
Collect停止流,并将流中的值放入某种类型的集合中,例如列表。
toArray()
toArray() 停止流并返回包含流中包含的元素的数组。
Finders 搜寻器
使用集合时,常见的任务是从流中获取元素。 通常在“Filter”和“Map”之后使用它们,以确保找到的元素与某些条件匹配并且属于首选类型。
findAny()
findAny() 返回一个Optional对象,该对象包含一个在流中匹配的元素(如果流为空,则为空)。 这里不遵守顺序,特别是在并行流情况下。
findFirst()
findFirst()返回一个Optional对象,它包含流中匹配的第一个元素(如果流为空,则为空)。 使用此方法时,它遵循流的顺序。
max(Comparator comparator)
max返回流中根据给定Comparator的最大元素
min(Comparator comparator)
min返回流中根据给定Comparator的最小元素
Matchers 匹配器
另一个常见任务是确定对象是否满足某些给定条件。 这些“匹配器”方法返回流中的某些,无对象或所有对象是否满足给定条件。
allMatch(Predicate pred)
如果流中的所有元素均与Predicate对象匹配,则返回true
anyMatch(Predicate pred)
如果流中的任何元素均与Predicate对象匹配,则返回true
noneMatch(Predicate pred)
如果流中的没有任何元素与Predicate对象匹配,则返回true
流修饰器
有时,流并不是完全“正确”的。 这些方法创建的新流与旧流的特征略有不同,无论是不同的长度,不同的起点还是保证仅包含唯一对象distinct()
创建一个新流,其中仅包含唯一的元素(基于.equals()来比较)。
limit(int maxSize)
limit(maxSize)通过将原始流截断为不超过maxSize的长度来创建新流。
skip(long n)
跳过流的前n个元素,并从其余元素中创建一个新流
sorted()
创建一个新的流,其中元素按照顺序排序
sorted(Comparator comparator)
创建一个新的流,在其中根据比较器对元素进行排序
流特征器
使用集合时,另一个常见的任务是确定整个集合的某些特征。 流api提供了一种方法来确定给定流的大小。
count()
count() 计算流中元素的数量
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/294306.html