Stream takeWhile / dropWhile
Toma o descarta elementos de un stream según un predicado.
Comparación de Código
✕ Java 8
List<Integer> result = new ArrayList<>();
for (int n : sorted) {
if (n >= 100) break;
result.add(n);
}
// no stream equivalent in Java 8
✓ Java 9+
var result = sorted.stream()
.takeWhile(n -> n < 100)
.toList();
// or: .dropWhile(n -> n < 10)
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Cortocircuito
Deja de procesar tan pronto como el predicado falla.
Compatible con pipelines
Se encadena con otras operaciones de stream naturalmente.
Declarativo
takeWhile se lee como inglés: 'toma mientras sea menor que 100'.
Enfoque Antiguo
Bucle manual
Enfoque Moderno
takeWhile/dropWhile
Desde JDK
9
Dificultad
Principiante
Soporte JDK
Stream takeWhile / dropWhile
Disponible
Ampliamente disponible desde JDK 9 (sept. 2017)
Cómo funciona
takeWhile() devuelve elementos mientras el predicado sea verdadero y se detiene en el primer falso. dropWhile() omite elementos mientras sea verdadero y devuelve el resto. Ambos funcionan mejor en streams ordenados.
Documentación Relacionada