Java Language Corrientes infinitas


Ejemplo

Es posible generar un Stream que no termine. Al llamar a un método de terminal en un Stream infinito Stream el Stream entra en un bucle infinito. El método de limit de un Stream se puede usar para limitar la cantidad de términos del Stream que Java procesa.

Este ejemplo genera una Stream de todos los números naturales, comenzando con el número 1. Cada término sucesivo de la Stream es uno más alto que el anterior. Al llamar al método de límite de este Stream , solo se consideran e imprimen los primeros cinco términos del 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);

Salida:

1
2
3
4
5


Otra forma de generar un flujo infinito es usando el método Stream.generate . Este método lleva una lambda de tipo Proveedor .

// 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);