Mejoras en Java 9 Stream API: takeWhile, dropWhile, iterate y ofNullable
Los Streams se introdujeron en Java para ayudar a los desarrolladores a realizar operaciones agregadas a partir de una secuencia de objetos. Con Java 9, se añaden algunos métodos más para mejorar los streams.
takeWhile(Interfaz Predicate)
Sintaxis
default Stream<T> takeWhile(Predicate<? super T> predicate)
El método takeWhile toma todos los valores hasta que el predicado devuelve false. Devuelve, en caso de stream ordenado, un stream que consiste en el prefijo más largo de elementos tomados de este stream que coinciden con el predicado dado.
Ejemplo
import java.util.stream.Stream;
public class Tester {
public static void main(String[] args) {
Stream.of("a","b","c","","e","f").takeWhile(s -> !s.isEmpty())
.forEach(System.out::print);
}
}
Salida
El método takeWhile toma todos los valores a, b y c, luego una vez que la cadena está vacía, deja de ejecutarse.
abc
dropWhile(Interfaz Predicate)
Sintaxis
default Stream<T> dropWhile(Predicate<? super T> predicate)
El método dropWhile descarta todos los valores al inicio hasta que el predicado devuelve true. Devuelve, en caso de stream ordenado, un stream que consiste en los elementos restantes de este stream después de descartar el prefijo más largo de elementos que coinciden con el predicado dado.
Ejemplo
import java.util.stream.Stream;
public class Tester {
public static void main(String[] args) {
Stream.of("a","b","c","","e","f").dropWhile(s -> !s.isEmpty())
.forEach(System.out::print);
System.out.println();
Stream.of("a","b","c","","e","","f").dropWhile(s -> !s.isEmpty())
.forEach(System.out::print);
}
}
Salida
El método dropWhile descarta a, b y c, luego una vez que la cadena está vacía, toma todos los valores.
ef
ef
iterate
Sintaxis
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
El método iterate ahora tiene el predicado hasNext como parámetro que detiene el bucle una vez que el predicado hasNext devuelve false.
Ejemplo
import java.util.stream.IntStream;
public class Tester {
public static void main(String[] args) {
IntStream.iterate(3, x -> x < 10, x -> x + 3).forEach(System.out::println);
}
}
Salida
3
6
9
ofNullable
Sintaxis
static <T> Stream<T> ofNullable(T t)
El método ofNullable se introduce para prevenir NullPointerExceptions y evitar comprobaciones nulas para streams. Este método devuelve un Stream secuencial conteniendo un solo elemento si no es nulo, de lo contrario devuelve un Stream vacío.
Ejemplo
import java.util.stream.Stream;
public class Tester {
public static void main(String[] args) {
long count = Stream.ofNullable(100).count();
System.out.println(count);
count = Stream.ofNullable(null).count();
System.out.println(count);
}
}
Salida
1
0
Java
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Comentarios en Java: Tipos, Uso y Mejores Prácticas
- Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
- Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
- Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
- Aserciones en Java: Guía práctica para detectar bugs y asegurar fiabilidad del código
- Java 9 (JDK 9) – Características y Beneficios Clave
- Java 9 API de Procesos: Mejoras Clave y Nuevas Características