本文主要是介绍每日一课 | 示例 Java 8 Stream 的 iterate 处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
整理:CSDN学院精品课
在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中的文件读取对象
每日一课 | Java 中把负数转换为正数
每日一课 | JavaScript的事件
每日一课 | Java 中把负数转换为正数
球分享
球点赞
球在看
这篇关于每日一课 | 示例 Java 8 Stream 的 iterate 处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!