无限流

可以生成不结束的 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);