Maison >Java >javaDidacticiel >Comment rechercher efficacement un objet dans une ArrayList par valeur de propriété ?

Comment rechercher efficacement un objet dans une ArrayList par valeur de propriété ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-06 20:58:13773parcourir

How to Efficiently Find an Object in an ArrayList by Property Value?

Rechercher un objet dans une ArrayList par propriété

Étant donné une ArrayList contenant des objets de classe Carnet, comment pouvons-nous récupérer efficacement un objet spécifique basé sur sur la valeur d'une propriété particulière, comme codeIsin ?

Solution (Java 8 Streams) :

Dans Java 8, nous pouvons exploiter les flux pour effectuer cette opération de manière concise :

public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) {
    return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null);
}

Approche de classe utilitaire (facultatif) :

Si nous devons effectuer de telles recherches dans de nombreuses classes différentes ou pour différentes propriétés, nous pouvons encapsuler cette logique dans un utilitaire class :

public final class FindUtils {
    public static <T> T findByProperty(Collection<T> col, Predicate<T> filter) {
        return col.stream().filter(filter).findFirst().orElse(null);
    }
}

public final class CarnetUtils {
    public static Carnet findByCodeTitre(Collection<Carnet> listCarnet, String codeTitre) {
        return FindUtils.findByProperty(listCarnet, carnet -> codeTitre.equals(carnet.getCodeTitre()));
    }

    // Similar methods for other properties (e.g., findByNomTitre, findByCodeIsIn)
}

Cette approche fournit une solution plus réutilisable et permet une modification facile des critères de recherche.

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