每日一课 | 示例 Java 8 Stream 的 iterate 处理

整理:学院精品课

在Java 8中,我们可以使用Stream.iterate创建流值,即所谓的无限流。

1. Stream.iterate

1.1 0 – 9流

//Stream.iterate(initial value, next value)  Stream.iterate(0, n -> n + 1)                .limit(10)                .forEach(x -> System.out.println(x));

输出量

0
1
2
3
4
5
6
7
8
9

1.2仅奇数流。

Stream.iterate(0, n -> n + 1)      .filter(x -> x % 2 != 0) //odd      .limit(10)      .forEach(x -> System.out.println(x));

输出量

1
3
5
7
9
11
13
15
17
19

1.3一个经典的斐波那契例子。

Stream.iterate(new int[]{0, 1}, n -> new int[]{n[1], n[0] + n[1]})    .limit(20)    .map(n -> n[0])    .forEach(x -> System.out.println(x));

输出量

01123581321345589144233377610987159725844181

1.4将所有斐波那契值相加。

int sum = Stream.iterate(new int[]{0, 1}, n -> new int[]{n[1], n[0] + n[1]})                .limit(10)                .map(n -> n[0]) // Stream<Integer>                .mapToInt(n -> n)                .sum();
        System.out.println("Fibonacci 10 sum : " + sum)

输出量

Fibonacci 10 sum : 88

2. Java 9

Java 9中对stream.iterate进行了增强。它支持谓词(条件)作为第二个参数,并且如果谓词为false, stream.iterate将停止。

2.1如果n >= 20则停止流迭代

Stream.iterate(1, n -> n < 20 , n -> n * 2)           .forEach(x -> System.out.println(x));
1
2
4
8
16

参考文献

Oracle文档– Java Stream迭代

翻译自: https://mkyong.com/java8/java-8-stream-iterate-examples/

球分享

球在看

整理:学院精品课 在Java 8中,我们可以使用Stream.iterate创建流值,即所谓的无限流。 1. Stream.iterate 1.1 0 – 9流 //Stream.iterate(initial value, next value) Stream.iterate(0, n -> n + 1) .limit(10)                .forEach(x -> System.out.println(x)); 输出量 0 1 2 3 4 5 6 7 8 9 1.2仅奇数流。 Stream.iterate(0, n -> n + 1) .filter(x -> x % 2 != 0) //odd .limit(10)      .forEach(x -> System.out.println(x)); 输出量 1 3 5 7 9 11 13 15 17 19 1.3一个经典的斐波那契例子。 Stream.iterate(new int[]{0, 1}, n -> new int[]{n[1], n[0] + n[1]}) .limit(20) .map(n -> n[0])    .forEach(x -> System.out.println(x)); 输出量 01123581321345589144233377610987159725844181 1.4将所有斐波那契值相加。 int sum = Stream.iterate(new int[]{0, 1}, n -> new int[]{n[1], n[0] + n[1]}) .limit(10) .map(n -> n[0]) // Stream .mapToInt(n -> n) .sum(); System.out.println("Fibonacci 10 sum : " + sum) 输出量 Fibonacci 10 sum : 88 2. Java 9 Java 9中对stream.iterate进行了增强。它支持谓词(条件)作为第二个参数,并且如果谓词为false, stream.iterate将停止。 2.1如果n >= 20则停止流迭代 Stream.iterate(1, n -> n < 20 , n -> n * 2)           .forEach(x -> System.out.println(x)); 1 2 4 8 16 参考文献 Oracle文档– Java Stream迭代 翻译自: https://mkyong.com/java8/java-8-stream-iterate-examples/ 球分享 球在看
经验分享 程序员 微信小程序 职场和发展