Comment vérifier si l’élément existe en utilisant une expression lambda?

Plus précisément, j’ai TabPane, et j’aimerais savoir s’il y a des éléments avec un identifiant spécifique.

Donc, je voudrais faire cela avec l’expression lambda en Java:

boolean idExists = false; Ssortingng idToCheck = "someId"; for (Tab t : tabPane.getTabs()){ if(t.getId().equals(idToCheck)) { idExists = true; } } 

Essayez d’utiliser anyMatch de l’expression Lambda. C’est une bien meilleure approche.

  boolean idExists = tabPane.getTabs().stream() .anyMatch(t -> t.getId().equals(idToCheck)); 

Bien que la réponse acceptée soit correcte, j’appendai une version plus élégante (à mon avis):

 boolean idExists = tabPane.getTabs().stream() .map(Tab::getId) .anyMatch(idToCheck::equals); 

Ne négligez pas l’utilisation de Stream # map () qui permet d’aplatir la structure de données avant d’appliquer le Predicate .

Les réponses ci-dessus nécessitent de créer un nouvel object stream.

 public  boolean containsByLambda(Collection< ? extends T> c, Predicate< ? super T> p) { for (final T z : c) { if (p.test(z)) { return true; } } return false; } public boolean containsTabById(TabPane tabPane, Ssortingng id) { return containsByLambda(tabPane.getTabs(), z -> z.getId().equals(id)); } ... if (containsTabById(tabPane, idToCheck))) { ... }