Comment puis-je annuler un lambda de Prédicat?
Permet de dire que j'ai un Flot de Chaînes.
final Stream<String> stream = ...;
Je veux filtrer chaque chaîne vide après garni.
stream
.filter(Objects::nonNull)
.map(String::trim)
.filter(v -> !v.isEmpty());
Est-il possible d'appliquer Prédicat#négation() pour remplacer v -> !v.isEmpty()
partie?
.filter(((Predicate) String::isEmpty).negate()) //not compile
Vous devez vous connecter pour publier un commentaire.
Que vous avez à faire
.filter(((Predicate<String>) String::isEmpty).negate())
Si vous le souhaitez, vous pouvez définir
et puis
mais je voudrais simplement coller avec
v -> !v.isEmpty()
return p.negate();
Il semble que vous ayez à lancer à
Predicate<String>
pour que cela fonctionne:Bien sûr, il serait beaucoup plus court pour utiliser une lambda dans ce cas:
Au lieu de créer des classes par vous-même utiliser le durian utilité de la bibliothèque. Il a beaucoup de méthodes:
and
,or
etnot
de cours: