Les options de filtre de flux Java sont très larges mais afin de travailler avec eux confortablement, vous devez comprendre le fonctionnement de l’interface de prédication en détail. Nous allons construire un exemple avec une liste de livres qui nous permettent de mieux comprendre comment fonctionnent les filtres. Pour cela, nous allons des objets suivants.
= » E10B010734 « >
Nous avons quatre livres et nous venons d’utiliser un filtre simple qui nous sélectionne les livres qui nous apportent 1000 pages utilisant un prédicat avec une expression Lambda. Le résultat est imprimé sur la console.
Voir quelques exemples.
package com.arquitecturajava;import java.util.function.Predicate;public class LibroUtils {public static Predicate<Libro> filtroCategoria(String categoria) {return (Libro l) -> {return l.getCategoria().equals(categoria);};}}
De cette façon, nous pouvons nous pouvons réutiliser l’expression et filtrer par la catégorie que nous voulons:
Cependant, le plus habituel dans de nombreux cas est de Générez des expressions fonctionnelles complexes, puis les flirter par des méthodes de référence. Par exemple, quelque chose comme l’expression suivante.
package com.arquitecturajava;import java.util.function.Predicate;public class LibroUtils { public static Predicate < Libro > filtroCategoria(String categoria) { return (Libro l) - > { return l.getCategoria().equals(categoria); }; } public static boolean buenosLibros(Libro libro) { Predicate < Libro > p1 = (Libro l) - > l.getCategoria().equals("ciencia ficcion"); Predicate < Libro > p2 = (Libro l) - > l.getCategoria().equals("fantasia"); Predicate < Libro > p3 = (Libro l) - > l.getPaginas() > 1000; Predicate < Libro > ptotal = p1.or(p2).and(p3); return ptotal.test(libro); }}
De cette façon, nous pouvons appeler ce type de filtre et réutiliser-le.
lista .stream() .filter(LibroUtils::buenosLibros) .map(Libro::getTitulo) .forEach(System.out::println);
Le résultat est le suivant:
Nous utilisons simplement le filtre de flux Java et ses options.
Autres articles connexes:
- Interface de prédicat Java et vos méthodes
- Java Stream Ruisseau et collections
- Java 8 Lambda Expressions (I)
- Oracle Java Lambda