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!