Java无限流

示例

可能会产生Stream不结束的。在无限上调用终端方法Stream会导致Stream进入无限循环。a的limit方法Stream可用于限制StreamJava处理的项数。

本示例生成一个Stream以数字1开头的所有自然数的。的每个连续项Stream比上一个高一个。通过调用this的limit方法Stream,仅Stream考虑和打印的前五个项。

// 生成无限流-1,2,3,4,4,5,6,7,...
IntStream naturalNumbers = IntStream.iterate(1, x -> x + 1);

// 仅打印前5个字词
naturalNumbers.limit(5).forEach(System.out::println);

输出:

1
2
3
4
5


生成无限流的另一种方法是使用该Stream.generate方法。此方法采用类型为Supplier的lambda。

// 生成无限的随机数流
Stream<Double> infiniteRandomNumbers = Stream.generate(Math::random);

// 仅打印前10个随机数
infiniteRandomNumbers.limit(10).forEach(System.out::println);