無限流

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