无限流
可以生成不结束的 Stream
。在无限 Stream
上调用终端方法会导致 Stream
进入无限循环。所述 limit
一个 Stream
的方法可以用来限制该 Stream
Java 进程的项数。
此示例生成所有自然数的 Stream
,从数字 1 开始 .Stream
的每个连续项比前一个高一个。通过调用此 Stream
的限制方法,只考虑和打印 Stream
的前五个项。
// Generate infinite stream - 1, 2, 3, 4, 5, 6, 7, ...
IntStream naturalNumbers = IntStream.iterate(1, x -> x + 1);
// Print out only the first 5 terms
naturalNumbers.limit(5).forEach(System.out::println);
输出:
1
2
3
4
5
生成无限流的另一种方法是使用 Stream.generate 方法。此方法采用 Supplier 类型的 lambda 。
// Generate an infinite stream of random numbers
Stream<Double> infiniteRandomNumbers = Stream.generate(Math::random);
// Print out only the first 10 random numbers
infiniteRandomNumbers.limit(10).forEach(System.out::println);