0% encontró este documento útil (0 votos)
71 vistas6 páginas

Ejemplos de Java Stream Filter

Este documento explica cómo usar filtros (filters) en Java Streams. Se define el interface Predicate y cómo se usa para filtrar una lista de libros por páginas o categoría. También muestra cómo crear métodos de utilidad para reutilizar expresiones de filtro de manera más compleja, como combinar varios predicados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
71 vistas6 páginas

Ejemplos de Java Stream Filter

Este documento explica cómo usar filtros (filters) en Java Streams. Se define el interface Predicate y cómo se usa para filtrar una lista de libros por páginas o categoría. También muestra cómo crear métodos de utilidad para reutilizar expresiones de filtro de manera más compleja, como combinar varios predicados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Java Stream Filter y Predicates

Las opciones de Java Stream Filter son muy amplias pero para poder trabajar con ellas de
forma cómoda hay que entender el funcionamiento del interface Predicate a detalle. Vamos
a construir un ejemplo con una lista de libros que nos permite entender mejor como
funcionan los filtros. Para ello vamos a partir de los siguientes objetos.

CURSO JAVA 8
GRATIS
APUNTATE!!

package [Link];

import [Link];
import [Link];

public class Principal {

public static void main(String[] args) {

Libro l = new Libro("El señor de los anillos", "fantasia",


1100);
Libro l2 = new Libro("El Juego de Ender", "ciencia ficcion",
500);
Libro l3 = new Libro("La fundacion", "ciencia ficcion", 500);
Libro l4 = new Libro("Los pilares de la tierra", "historica",
1200);

List < Libro > lista = [Link](l, l2, l3, l4);

[Link]
Java Stream Filter y Predicates

[Link]()
.filter(libro - > [Link]() > 1000)
.map(libro - > [Link]())
.forEach([Link]::println);

Tenemos cuatro libros y acabamos de usar un filtro sencillo que nos selecciona los libros
que pasan de 1000 páginas utilizando un Predicate con una expresión lambda. El resultado
se imprime en la consola.

Java Stream Filter


El filtro funciona de forma correcta , pero no siempre queremos filtran usando una
expresión lambda de una forma directa ya que no tiene una gran capacidad de reutilización.
En muchos casos suele ser mejor tener alguna clase de apoyo que defina una serie de
expresiones lambda y predicados que nos ayuden y se reutilicen.

[Link]
Java Stream Filter y Predicates

Vamos a ver un par de ejemplos.

package [Link];

import [Link];

public class LibroUtils {

public static Predicate<Libro> filtroCategoria(String


categoria) {

return (Libro l) -> {


return [Link]().equals(categoria);
};
}

De esta forma podemos podemos reutilizar la expresión , y filtrar por la categoría que
deseemos:

[Link]
Java Stream Filter y Predicates

lista
.stream()
.filter([Link]("ciencia ficcion"))
.map(libro - > [Link]())
.forEach([Link]::println);

Sin embargo lo más habitual en muchos casos es generar expresiones funcionales complejas
y luego ligarlas a través de métodos de referencia . Por ejemplo algo como la siguiente
expresion.

package [Link];

import [Link];

public class LibroUtils {

public static Predicate < Libro > filtroCategoria(String


categoria) {

return (Libro l) - > {


return [Link]().equals(categoria);
};
}

public static boolean buenosLibros(Libro libro) {

Predicate < Libro > p1 = (Libro l) - >


[Link]().equals("ciencia ficcion");
Predicate < Libro > p2 = (Libro l) - >
[Link]().equals("fantasia");
Predicate < Libro > p3 = (Libro l) - > [Link]() > 1000;
Predicate < Libro > ptotal = [Link](p2).and(p3);

[Link]
Java Stream Filter y Predicates

return [Link](libro);
}
}

De esta forma nosotros podemos invocar este tipo de filtro y reutilizarlo.

lista
.stream()
.filter(LibroUtils::buenosLibros)
.map(Libro::getTitulo)
.forEach([Link]::println);

El resultado es:

Acabamos de usar Java Stream Filter y sus opciones.

CURSO SPRING BOOT


GRATIS
APUNTATE!!

Otros artículos relacionados:


1. Java Predicate Interface y sus métodos
2. Java Stream forEach y colecciones
3. Java 8 Lambda Expressions (I)
4. Oracle Java Lambda

[Link]
Java Stream Filter y Predicates

[Link]

También podría gustarte