Abrufen von Objekten aus Array-Listen basierend auf Eigenschaften
Bei der objektorientierten Programmierung stoßen Sie häufig auf Szenarien, in denen Sie ein Objekt mit a finden müssen bestimmte Eigenschaft inmitten einer Sammlung. Dies kann besonders in Frameworks wie Java EE nützlich sein, wo Sie möglicherweise mit POJOs arbeiten und Objekte aus einem In-Memory-Cache abrufen müssen.
Stellen Sie sich ein Szenario vor, in dem Sie eine Liste von Carnet-Objekten verwalten. Jedes davon besitzt Eigenschaften wie codeTitre, nomTitre und codeIsin. Angenommen, Sie müssen ein bestimmtes Carnet-Objekt anhand seiner Code-Isin finden. Um dies zu erreichen, können Sie die Leistungsfähigkeit der Java-Streams nutzen:
public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) { return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null); }
Dieses Code-Snippet nutzt Streams, um die Sammlung von Carnet-Objekten effizient zu durchsuchen und diejenigen herauszufiltern, die nicht den angegebenen CodeIsIn-Kriterien entsprechen. Durch die Nutzung der findFirst()-Methode rufen Sie das erste passende Objekt ab oder null, wenn kein Objekt gefunden wird.
Es kann auch vorkommen, dass Sie Objekte mit unterschiedlichen Eigenschaften oder über mehrere Objekttypen hinweg finden müssen. Um dies zu beheben, können Sie eine Dienstprogrammklasse wie FindUtils einführen:
public final class FindUtils { public static <T> T findByProperty(Collection<T> col, Predicate<T> filter) { return col.stream().filter(filter).findFirst().orElse(null); } }
Diese Dienstprogrammklasse stellt eine generische Methode bereit, die zum Suchen nach Objekten basierend auf beliebigen angegebenen Kriterien verwendet werden kann.
Darüber hinaus können Sie für jeden Objekttyp spezifische Dienstprogrammklassen erstellen, wie z. B. 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 }
Durch den Einsatz dieser Dienstprogrammklassen können Sie einfach und flexibel suchen für Objekte in Ihren ArrayLists, unabhängig von ihren spezifischen Eigenschaften.
Das obige ist der detaillierte Inhalt vonWie kann man Objekte basierend auf bestimmten Eigenschaften effizient aus ArrayLists abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!