Streams Intermedio

Usa un predicato per fermare l'iterazione — come un ciclo for in forma 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
Vedi un problema con questo codice? Faccelo sapere.
🎯

Terminazione naturale

Fermati in base a una condizione, non a un limite arbitrario.

📐

Equivalente al ciclo for

Stessa semantica di for(seed; hasNext; next).

🛡️

Nessun rischio di stream infinito

Il predicato garantisce la terminazione.

Approccio Vecchio
iterate + limit
Approccio Moderno
iterate(seed, pred, op)
Dal JDK
9
Difficoltà
Intermedio
Stream.iterate() con predicato
Disponibile

Ampiamente disponibile dal JDK 9 (settembre 2017)

Il tre-argomenti Stream.iterate(seed, hasNext, next) funziona come un ciclo for: seed è l'inizio, hasNext determina quando fermarsi e next produce il valore successivo.

Condividi 𝕏 🦋 in