Recherche dans des listes d'objets avec des valeurs de champ spécifiques
Lorsque vous travaillez avec des listes Java, rechercher des objets spécifiques en fonction de leurs valeurs de champ peut être une tâche courante tâche. Bien que les approches par force brute utilisant des boucles soient viables, des méthodes plus efficaces existent.
Exploiter les flux avec Java 8
Les flux de Java 8 offrent une solution élégante. L'extrait de code suivant montre comment rechercher un objet avec une valeur de champ spécifique à l'aide de flux :
<code class="java">public boolean containsName(final List<MyObject> list, final String name) { return list.stream().filter(o -> o.getName().equals(name)).findFirst().isPresent(); }</code>
Vous pouvez également utiliser les méthodes map et filter pour obtenir le même résultat :
<code class="java">public boolean containsName(final List<MyObject> list, final String name) { return list.stream().map(MyObject::getName).filter(name::equals).findFirst().isPresent(); }</code>
Si vous souhaitez effectuer une opération sur chaque objet avec la valeur de champ spécifiée, vous pouvez utiliser la méthode forEach comme suit :
<code class="java">public void perform(final List<MyObject> list, final String name) { list.stream().filter(o -> o.getName().equals(name)).forEach( o -> { //... } ); }</code>
Utilisation de Stream#anyMatch
Une autre option consiste à utiliser la méthode Stream#anyMatch, qui renvoie vrai si un élément correspond au prédicat spécifié :
<code class="java">public boolean containsName(final List<MyObject> list, final String name) { return list.stream().anyMatch(o -> name.equals(o.getName())); }</code>
En tirant parti des flux, vous pouvez effectuer des recherches efficaces d'objets avec des valeurs de champ spécifiques. dans les listes, améliorant la lisibilité et les performances du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!