English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Java 9 El API de Stream mejorado agrega algunos métodos convenientes que facilitan el procesamiento de flujos y permite escribir consultas complejas con colecciones.
Java 9 Se han añadido varios métodos a Stream: dropWhile, takeWhile, ofNullable, y se ha añadido una sobrecarga de método al método iterate.
Sintaxis
default Stream<T> takeWhile(Predicate<? super T> predicate)
El método takeWhile() utiliza una afirmación como parámetro, devolviendo un subconjunto del flujo dado hasta que la afirmación devuelve false por primera vez. Si el primer valor no cumple con la condición de la afirmación, se devuelve un flujo vacío.
El método takeWhile() en un flujo ordenado, takeWhile devuelve el mayor número posible de elementos desde el principio; en un flujo no ordenado, takeWhile devuelve un subconjunto de elementos que cumplen con el Predicate desde el principio.
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); } }
El ejemplo anterior de la función takeWhile detiene la salida en bucle cuando se encuentra una cadena vacía, y el resultado de la ejecución es:
abc
Sintaxis
default Stream<T> dropWhile(Predicate<? super T> predicate)
El método dropWhile y el método takeWhile actúan en sentido opuesto, utilizando una afirmación como parámetro hasta que la afirmación devuelve false por primera vez, devolviendo entonces un subconjunto del flujo dado.
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); } }
El ejemplo anterior de la función dropWhile comienza a generar salida en bucle cuando se encuentra una cadena vacía, y el resultado de la ejecución es:
ef
Sintaxis
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
El método permite crear un flujo ordenado (posiblemente infinito) utilizando un valor de semilla inicial y aplicando iterativamente el método especificado siguiente. La iteración se detiene cuando el predicate especificado de hasNext devuelve false.
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); } }
El resultado de la ejecución es:
3 6 9
Sintaxis
static <T> Stream<T> ofNullable(T t)
El método ofNullable puede prevenir la excepción NullPointerException, evitando así valores null mediante la verificación del flujo.
Si se especifica un elemento no nulo, se obtiene un elemento y se genera un flujo de elementos individuales, y si se especifica null, se devuelve un flujo vacío.
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { long count = Stream.ofNullable(10).count(); System.out.println(count); count = Stream.ofNullable(null).count(); System.out.println(count); } }
El resultado de la ejecución es:
1 0