Heim > Java > javaLernprogramm > Wie kann man in Java-Listen effizient nach Objekten mit bestimmten Feldwerten suchen?

Wie kann man in Java-Listen effizient nach Objekten mit bestimmten Feldwerten suchen?

Barbara Streisand
Freigeben: 2024-11-02 09:56:02
Original
894 Leute haben es durchsucht

How to Efficiently Search for Objects with Specific Field Values in Java Lists?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage