Streams Intermédiaire

Utilisez un prédicat pour arrêter l'itération — comme une boucle for sous forme de stream.

✕ Java 8
Stream.iterate(1, n -> n * 2)
    .limit(10)
    .forEach(System.out::println);
// can't stop at a condition
✓ Java 9+
Stream.iterate(
    1,
    n -> n < 1000,
    n -> n * 2
).forEach(IO::println);
// stops when n >= 1000
Un problème avec ce code ? Dites-le nous.
🎯

Terminaison naturelle

S'arrête selon une condition, pas une limite arbitraire.

📐

Équivalent à for

Même sémantique que for(seed; hasNext; next).

🛡️

Sans risque de stream infini

Le prédicat garantit la terminaison.

Ancienne Approche
iterate + limit
Approche Moderne
iterate(seed, pred, op)
Depuis JDK
9
Difficulté
Intermédiaire
Stream.iterate() avec prédicat
Disponible

Disponible depuis JDK 9 (sept. 2017)

Stream.iterate(seed, hasNext, next) à trois arguments fonctionne comme une boucle for : seed est le début, hasNext détermine quand s'arrêter et next produit la valeur suivante.

Partager 𝕏 🦋 in