Ya nos enteramos de que Java 8 introdujo la API Stream junto con muchas otras funciones excelentes. Si no está familiarizado con Streams, consulte esta guía: Java 8 – Stream API. Java 9 introdujo cuatro métodos nuevos para la API Stream. Estos métodos se agregan en la interfaz java.util.Stream.

Java 9: ​​mejoras de la API de transmisión

Java 9 agregó los siguientes cuatro métodos a Stream. Dado que Stream es una interfaz, los métodos agregados son predefinidos y estáticos. Esto se debe a que java 8 nos permite tener métodos predefinidos y estáticos en la interfaz.
1. dropWhile () – método predeterminado
2. takeWhile () – método predeterminado
3. iterate () – método estático
4. ofNullable () – método estático

Java 9 – Método Stream dropWhile ()

El método dropWhile () descarta todos los elementos del flujo hasta que falla el predicado dado.

Por ejemplo:

jshell> Stream<Integer> mystream = Stream.of(11, 22, 40, 60, 100)
mystream ==> [email protected]

jshell> mystream.dropWhile(num -> num < 50).forEach(num -> System.out.println(num))
60
100

Método de Java 9 Stream doWhile ()

Nota: cuando el flujo no está ordenado, dropMientras () descarta todos los elementos hasta que falla el predicado dado, este método no busca más elementos de la secuencia una vez que falla el predicado. Esto significa que la secuencia resultante puede tener elementos que coincidan con el predicado, tomemos un ejemplo para entenderlo.

jshell> Stream<Integer> mystream = Stream.of(11, 22, 40, 60, 10, 15, 30, 100)
mystream ==> [email protected]

jshell> mystream.dropWhile(num -> num < 50).forEach(num -> System.out.println(num))
60
10
15
30
100

Aquí los elementos 10, 15, 30 que están presentes en la secuencia después del elemento 60 corresponden al predicado pero no fueron descartados por dropWhile () porque cuando el predicado falló en el elemento 60, el método no verificó los elementos adicionales.
Flujo desordenado del método dropWhile () de Java 9

leer  java 9 JShell - Trabajar con métodos

Java 9 – método de transmisión takeWhile ()

El método takeWhile () funciona exactamente de manera opuesta al método dropWhile (). Este método acepta todos los elementos de la secuencia en la secuencia resultante hasta que falla el predicado. En resumen, cuando el predicado falla, elimina ese elemento y todos los elementos que siguen a ese elemento en el flujo. Tomemos algunos ejemplos para entender esto.

Usando el método takeWhile () en una secuencia ordenada

Aquí, la secuencia se ordena y el método takeWhile () toma todos los elementos hasta que el predicado falla en el valor del elemento 60.

jshell> Stream<Integer> mystream = Stream.of(10, 20, 30, 40, 60, 90, 120)
mystream ==> java.util.stream.ReferencePip[email protected]

jshell> mystream.takeWhile(num -> num < 50).forEach(num -> System.out.println(num))
10
20
30
40

Usando el método takeWhile () en una secuencia sin clasificar

Similar al método dropWhile (), este método tampoco busca elementos una vez que falla el predicado. Esta es la razón por la que los elementos 10 y 15 se eliminan porque vinieron después del elemento 60 (en el que falló el predicado).

jshell> Stream<Integer> mystream = Stream.of(10, 20, 40, 60, 70, 10, 15, 100)
mystream ==> [email protected]

jshell> mystream.takeWhile(num -> num < 50).forEach(num -> System.out.println(num))
10
20
40

Java 9: ​​método Stream iterate ()

El método iterado en Java 9 tiene tres argumentos.
Primer argumento es el valor inicial, la secuencia devuelta comienza con este valor.
Segundo argumento es el predicado, la iteración continúa hasta que este predicado dado devuelve falso.
Tercer argumento actualiza el valor de la iteración anterior.

Ejemplo:

En este ejemplo, el primer argumento es 1. El flujo comienza con el elemento 1.

leer  Java 9: ​​métodos de fábrica para crear un conjunto inmutable

num -> num <30 è il secondo argomento ed è un predicato. L'iterazione continua fino a quando non restituisce false. num -> num * 3 es el tercer argumento que actualiza el valor de retorno de la iteración anterior. Funciona de forma similar a la variable de contador de un bucle.

jshell> IntStream.iterate(1, num -> num < 30, num -> num*3).forEach(num ->System.out.println(num))
1
3
9
27

Comenzando con el valor 1, estamos multiplicando el valor devuelto por 3 y esto continúa hasta que el valor devuelto es mayor que 30.

Método Java 9 Iterar

Java 9 – Método Stream ofNullable ()

Este método se introduce para evitar NullPointerException. Este método devuelve una secuencia vacía si la secuencia es nula. También se puede utilizar en un flujo no vacío donde devuelve un flujo secuencial de un solo elemento.

Ejemplo de flujo cero

jshell> Stream<String> stream = Stream.ofNullable(null)
stream ==> [email protected]

jshell> stream.forEach(str -> System.out.println(str))

jshell>

Método de Java 9 ofNullable ()

Ejemplo de flujo distinto de cero

jshell> Stream<String> stream = Stream.ofNullable("Rose")
stream ==> [email protected]

jshell> stream.forEach(str -> System.out.println(str))
Rose

jshell>

Estas son las cuatro mejoras de Stream API que se ejecutan en Java SE 9.

Por avivcas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *