API de Stream mejorada de Java 9
Nuevas características de Java 9
La API de Stream mejorada de Java 9 agrega algunos métodos convenientes que facilitan el procesamiento de flujos y la escritura de consultas complejas con colectores.
Java 9 agrega varios métodos nuevos a Stream: dropWhile, takeWhile, ofNullable, y agrega un método sobrecargado para el método iterate.
método takeWhile
Sintaxis
default Stream<T> takeWhile(Predicate<? super T> predicate)
El método takeWhile() usa un predicado como parámetro y devuelve un subconjunto del Stream dado hasta que la sentencia del predicado devuelve false por primera vez. Si el primer valor no cumple la condición del predicado, devolverá un Stream vacío.
El método takeWhile() en un Stream ordenado devuelve tantos elementos como sea posible desde el principio; en un Stream no ordenado, takeWhile devuelve un subconjunto de elementos desde el principio que cumplen los requisitos del Predicate.
Ejemplo
En el ejemplo anterior, el método takeWhile deja de generar la salida en bucle al encontrar una cadena vacía. El resultado de la ejecución es:
abc
método dropWhile
Sintaxis
default Stream<T> dropWhile(Predicate<? super T> predicate)
El método dropWhile tiene el efecto contrario al de takeWhile: usa un predicado como parámetro y solo devuelve un subconjunto del Stream dado cuando la sentencia del predicado devuelve false por primera vez.
Ejemplo
En el ejemplo anterior, el método dropWhile comienza a generar la salida en bucle al encontrar una cadena vacía. El resultado de la ejecución es:
ef
método iterate
Sintaxis
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
El método permite crear un flujo secuencial (potencialmente infinito) utilizando un valor semilla inicial y aplicando iterativamente el método next especificado. La iteración se detiene cuando el predicado hasNext especificado devuelve false.
Ejemplo
El resultado de la ejecución es:
3 6 9
método ofNullable
Sintaxis
static <T> Stream<T> ofNullable(T t)
El método ofNullable puede prevenir la excepción NullPointerException, ya que permite evitar valores null mediante la comprobación del flujo.
Si el elemento especificado no es null, toma el elemento y genera un flujo de un solo elemento; si el elemento es null, devuelve un flujo vacío.
Ejemplo
El resultado de la ejecución es:
1 0Otras extensiones