Java Language Streams infinis


Exemple

Il est possible de générer un Stream qui ne se termine pas. L'appel d'une méthode de terminal sur un Stream infini entraîne l'entrée du Stream dans une boucle infinie. La méthode de limit d'un Stream peut être utilisée pour limiter le nombre de termes du Stream traité par Java.

Cet exemple génère un Stream de tous les nombres naturels, en commençant par le nombre 1. Chaque terme successif du Stream est supérieur à celui précédent. En appelant la méthode des limites de ce Stream , seuls les cinq premiers termes du Stream sont pris en compte et imprimés.

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

Sortie:

1
2
3
4
5


Une autre façon de générer un flux infini consiste à utiliser la méthode Stream.generate . Cette méthode prend un lambda de type fournisseur .

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