Maison  >  Article  >  Java  >  Comment rechercher efficacement des objets avec des valeurs de champ spécifiques dans les listes Java ?

Comment rechercher efficacement des objets avec des valeurs de champ spécifiques dans les listes Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 09:56:02816parcourir

How to Efficiently Search for Objects with Specific Field Values in Java Lists?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn