Java 9重载流迭代方法

iterate()方法用于创建以单个元素(种子)开始的流,随后的元素通过连续应用一元运算符产生。
结果是无限流。
要终止流,可以使用限制或者其他一些短路函数,例如“findFirst”或者“findAny”。

Java 8 中的 iterate方法具有以下签名:

static<T> Stream<T> iterate(final T seed, final UnaryOperator<T> f)

在 Java 9 中,iterate的新重载版本将 Predicate 作为第二个参数:

static<T> Stream<T> iterate(T seed, Predicate hasNext, UnaryOperator<T> next)

在 java 8 中和 在java 9中使用 iterate方法的区别:

Java 8 中的迭代方法

List<Integer> numbers = Stream.iterate(1, i -> i+1)
                            .limit(10)
                            .collect(Collectors.toList());

System.out.println(numbers);
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Java 9 中的迭代方法

List<Integer> numbers = Stream.iterate(1, i -> i <= 10 ,i -> i+1)
                                .collect(Collectors.toList());
System.out.println(numbers);
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

在上面的示例中,第一个流是 Java 8 使用带限制迭代的方式。
第二个使用 Predicate 作为第二个参数。

日期:2020-09-17 00:10:05 来源:oir作者:oir