Streams Intermediário

Use um predicado para encerrar a iteração — como um for-loop em forma 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
Viu um problema com este código? Nos avise.
🎯

Terminação natural

Pare com base em uma condição, não em um limite arbitrário.

📐

Equivalente ao for-loop

Mesma semântica que for(seed; hasNext; next).

🛡️

Sem risco de stream infinito

O predicado garante a terminação.

Abordagem Antiga
iterate + limit
Abordagem Moderna
iterate(seed, pred, op)
Desde o JDK
9
Dificuldade
Intermediário
Stream.iterate() com predicado
Disponível

Amplamente disponível desde o JDK 9 (setembro de 2017)

O Stream.iterate(seed, hasNext, next) com três argumentos funciona como um for-loop: seed é o início, hasNext determina quando parar e next produz o próximo valor.

Compartilhar 𝕏 🦋 in