Predicate.not() pour la négation
Utilisez Predicate.not() pour nier des références de méthodes proprement au lieu d'écrire des lambdas enveloppants.
Comparaison de Code
✕ Java 8
List<String> nonEmpty = list.stream()
.filter(s -> !s.isBlank())
.collect(Collectors.toList());
✓ Java 11+
List<String> nonEmpty = list.stream()
.filter(Predicate.not(String::isBlank))
.toList();
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Négation plus propre
Pas besoin d'envelopper les références de méthodes dans des lambdas juste pour les nier.
Composable
Fonctionne avec n'importe quel Predicate, permettant des chaînes de prédicats propres.
Se lit naturellement
Predicate.not(String::isBlank) se lit comme un langage naturel.
Ancienne Approche
Négation avec lambda
Approche Moderne
Predicate.not()
Depuis JDK
11
Difficulté
Débutant
Support JDK
Predicate.not() pour la négation
Disponible
Disponible depuis JDK 11 (septembre 2018).
Comment ça fonctionne
Avant Java 11, nier une référence de méthode nécessitait de l'envelopper dans une lambda. Predicate.not() permet de nier n'importe quel prédicat directement, gardant le code lisible et cohérent avec le style de références de méthodes dans tout le pipeline de stream.
Documentation Associée