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