主要内容
Java 8 Streams 在集合和其他数据集上运行函数式操作。
所有流计算都有一种共同的结构:它们具有一个流来源、0 或多个中间操作,以及一个终止操作。
更新历史
无
来源
方法 | 描述 |
---|---|
Collection.stream() | 使用一个集合的元素创建一个流。 |
Stream.of(T…) | 使用传递给工厂方法的参数创建一个流。 |
Stream.of(T[]) | 使用一个数组的元素创建一个流。 |
Stream.empty() | 创建一个空流。 |
Stream.iterate(T first, BinaryOperator |
创建一个包含序列 first, f(first), f(f(first)), … 的无限流 |
Stream.iterate(T first, Predicate |
(仅限 Java 9)类似于 Stream.iterate(T first, BinaryOperator |
Stream.generate(Supplier |
使用一个生成器函数创建一个无限流。 |
IntStream.range(lower, upper) | 创建一个由下限到上限(不含)之间的元素组成的 IntStream。 |
IntStream.rangeClosed(lower, upper) | 创建一个由下限到上限(含)之间的元素组成的 IntStream。 |
BufferedReader.lines() | 创建一个有来自 BufferedReader 的行组成的流。 |
BitSet.stream() | 创建一个由 BitSet 中的设置位的索引组成的 IntStream。 |
Stream.chars() | 创建一个与 String 中的字符对应的 IntStream。 |
中间操作
负责将一个流转换为另一个流
操作 | 内容 |
---|---|
filter(Predicate |
接受一个断言(谓词,返回boolean的函数)作为参数,并返回一个包括所有符合断言的元素的流 |
map(Function<T, U>) | 映射, 将提供的函数应用于流的元素,并将其映射成一个新的元素 |
flatMap(Function<T, Stream> | 映射,扁平, 将提供的函数应用于流元素后获得的流元素, 即将一个流中的每个值都换成另一个流,然后把所有的流连接成为一个流 |
distinct() | 已删除了重复的流元素 |
sorted() | 按自然顺序排序的流元素 |
Sorted(Comparator |
按提供的比较符排序的流元素 |
limit(long) | 截断至所提供长度的流元素 |
skip(long) | 丢弃了前 N 个元素的流元素, 与 limit 互补 |
takeWhile(Predicate |
(仅限 Java 9)在第一个提供的预期不是 true 的元素处阶段的流元素 |
dropWhile(Predicate |
(仅限 Java 9)丢弃了所提供的预期为 true 的初始元素分段的流元素 |
终止操作
结束流
操作 | 描述 |
---|---|
forEach(Consumer |
将提供的操作应用于流的每个元素。 |
toArray() | 使用流的元素创建一个数组。 |
reduce(…) | 将流的元素聚合为一个汇总值。 |
collect(…) | 将流的元素聚合到一个汇总结果容器中。 |
min(Comparator |
通过比较符返回流的最小元素。 |
max(Comparator |
通过比较符返回流的最大元素。 |
count() | 返回流的大小。 |
{any,all,none}Match(Predicate |
返回流的任何/所有元素是否与提供的预期相匹配。 |
findFirst() | 返回流的第一个元素(如果有)。 |
findAny() | 返回流的任何元素(如果有)。 |