Java Stream Filtre et prédicats

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.

<2783E9cf80 ">

= » 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.

filtre de flux Java

Filtre de flux Java

Le filtre fonctionne correctement, mais nous ne souhaitons pas toujours filtrer à l’aide d’une expression de Lambda de manière directe car il n’a pas de grande capacité de réutilisation. Dans de nombreux cas, il est généralement préférable d’avoir une sorte de soutien qui définit une série de Lambda et des expressions de prédicat qui nous aident et qui sont réutilisées.

Diagramme de filtre de flux Java

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:

Filtre de flux Java

Nous utilisons simplement le filtre de flux Java et ses options.

Autres articles connexes:

  1. Interface de prédicat Java et vos méthodes
  2. Java Stream Ruisseau et collections
  3. Java 8 Lambda Expressions (I)
  4. Oracle Java Lambda

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *