Stream.iterate() con predicado
Usa un predicado para detener la iteración — como un bucle for en forma de stream.
Comparación de Código
✕ 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
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Terminación natural
Se detiene según una condición, no un límite arbitrario.
Equivalente a for
Misma semántica que for(seed; hasNext; next).
Sin riesgo de stream infinito
El predicado garantiza la terminación.
Enfoque Antiguo
iterate + limit
Enfoque Moderno
iterate(seed, pred, op)
Desde JDK
9
Dificultad
Intermedio
Soporte JDK
Stream.iterate() con predicado
Disponible
Ampliamente disponible desde JDK 9 (sept. 2017)
Cómo funciona
El Stream.iterate(seed, hasNext, next) con tres argumentos funciona como un bucle for: seed es el inicio, hasNext determina cuándo detenerse y next produce el siguiente valor.
Documentación Relacionada