Maison > Java > javaDidacticiel > 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
Libérer: 2024-11-02 09:56:02
original
894 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal