Maison >Java >javaDidacticiel >Comment rechercher efficacement un objet dans une ArrayList Java par propriété ?
Recherche d'un objet dans une ArrayList par propriété
Lorsque vous traitez de grands ensembles de données stockés dans des ArrayLists, rechercher un objet spécifique en fonction d'une certaine propriété peut s’avérer difficile. Cet article explore des solutions efficaces pour ce scénario, en se concentrant spécifiquement sur la recherche d'une ArrayList d'objets Carnet par leur propriété codeIsin.
Approche Java 8 Stream :
Java 8 a introduit le API de flux puissante, offrant un moyen élégant et concis d'effectuer des opérations sur les collections. Pour rechercher un objet dans une ArrayList par une propriété, vous pouvez utiliser la fonction stream() pour créer un flux d'éléments, suivie de la fonction filter() pour filtrer les éléments qui ne correspondent pas à la propriété souhaitée. Enfin, utilisez la fonction findFirst() pour récupérer le premier élément correspondant, ou renvoyez null si aucun n'est trouvé.
public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) { return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null); }
Approche de la méthode de classe utilitaire :
Cette Cette approche implique la création d'une classe utilitaire avec des méthodes statiques qui encapsulent la logique de recherche pour différentes propriétés. Cela garantit la réutilisabilité et la modularité. La classe FindUtils fournit la méthode générique findByProperty(), qui accepte une collection et une fonction prédicat comme paramètres. La fonction prédicat définit la condition de filtrage de la collection.
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())); } public static Carnet findByNomTitre(Collection<Carnet> listCarnet, String nomTitre) { return FindUtils.findByProperty(listCarnet, carnet -> nomTitre.equals(carnet.getNomTitre())); } public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsin) { return FindUtils.findByProperty(listCarnet, carnet -> codeIsin.equals(carnet.getCodeIsin())); } }
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!