Maison >Java >javaDidacticiel >Comment récupérer efficacement des objets à partir de ArrayLists en fonction de propriétés spécifiques ?
Récupération d'objets à partir de listes de tableaux en fonction de propriétés
Dans la programmation orientée objet, vous rencontrez souvent des scénarios dans lesquels vous devez localiser un objet avec un propriété spécifique au sein d’une collection. Cela peut être particulièrement utile dans des frameworks comme Java EE, où vous travaillez avec des POJO et devez récupérer des objets à partir d'un cache en mémoire.
Considérez un scénario dans lequel vous gérez une liste d'objets Carnet, dont chacun possède des propriétés telles que codeTitre, nomTitre et codeIsin. Supposons que vous ayez besoin de rechercher un objet Carnet particulier en fonction de son codeIsin. Pour y parvenir, vous pouvez exploiter la puissance des flux de Java :
public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) { return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null); }
Cet extrait de code utilise des flux pour rechercher efficacement dans la collection d'objets Carnet, en filtrant ceux qui ne correspondent pas aux critères codeIsIn donnés. En tirant parti de la méthode findFirst(), vous récupérez le premier objet correspondant, ou null si aucun objet n'est trouvé.
Vous pouvez également rencontrer des situations dans lesquelles vous devez rechercher des objets avec des propriétés différentes ou parmi plusieurs types d'objets. Pour résoudre ce problème, vous pouvez introduire une classe utilitaire comme FindUtils :
public final class FindUtils { public static <T> T findByProperty(Collection<T> col, Predicate<T> filter) { return col.stream().filter(filter).findFirst().orElse(null); } }
Cette classe utilitaire fournit une méthode générique qui peut être utilisée pour rechercher des objets en fonction de critères spécifiés.
De plus , vous pouvez créer des classes utilitaires spécifiques pour chaque type d'objet, comme CarnetUtils :
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 finding by other properties }
En employant ces classes utilitaires, vous pouvez rechercher facilement et de manière flexible pour les objets de vos ArrayLists, quelles que soient leurs propriétés spécifiques.
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!