Listen nach Objekten mit bestimmten Feldwerten durchsuchen
Bei der Arbeit mit Java-Listen kann es häufig vorkommen, dass bestimmte Objekte anhand ihrer Feldwerte gefunden werden Aufgabe. Während Brute-Force-Ansätze mit Schleifen realisierbar sind, gibt es effizientere Methoden.
Nutzung von Streams mit Java 8
Die Streams von Java 8 bieten eine elegante Lösung. Der folgende Codeausschnitt zeigt, wie mithilfe von Streams nach einem Objekt mit einem bestimmten Feldwert gesucht wird:
<code class="java">public boolean containsName(final List<MyObject> list, final String name) { return list.stream().filter(o -> o.getName().equals(name)).findFirst().isPresent(); }</code>
Alternativ können Sie auch die Karten- und Filtermethoden verwenden, um das gleiche Ergebnis zu erzielen:
<code class="java">public boolean containsName(final List<MyObject> list, final String name) { return list.stream().map(MyObject::getName).filter(name::equals).findFirst().isPresent(); }</code>
Wenn Sie eine Operation für jedes Objekt mit dem angegebenen Feldwert ausführen möchten, können Sie die forEach-Methode wie folgt verwenden:
<code class="java">public void perform(final List<MyObject> list, final String name) { list.stream().filter(o -> o.getName().equals(name)).forEach( o -> { //... } ); }</code>
Verwenden von Stream#anyMatch
Eine weitere Option ist die Verwendung der Stream#anyMatch-Methode, die „true“ zurückgibt, wenn ein Element mit dem angegebenen Prädikat übereinstimmt:
<code class="java">public boolean containsName(final List<MyObject> list, final String name) { return list.stream().anyMatch(o -> name.equals(o.getName())); }</code>
Durch die Nutzung von Streams können Sie effiziente Suchen nach Objekten mit bestimmten Feldwerten durchführen innerhalb von Listen, wodurch die Lesbarkeit und Leistung des Codes verbessert wird.
Das obige ist der detaillierte Inhalt vonWie kann man in Java-Listen effizient nach Objekten mit bestimmten Feldwerten suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!