[Java] Stream (Filter, Map, ForEach, Reduce)

Überblick

Mir wurde gesagt "Write in Stream!" Und ich habe die Vorzüge nicht verstanden, also werde ich es zusammenfassen.

Was ich fand

--stream Sehr praktisch.

Filter: Filterbedingungen

List<String> tanakaList = 
    list.stream
        .filter(item -> item.getName.equals("Tanaka"))
        .collect(Collectors.toList());

(Da ich die Anzahl der Zeilen mit list.add () genommen habe, bin ich wirklich froh, dass es verschwunden ist ...)

map: Wertumwandlung

List<String> nameList = list.stream
                            .map(item -> item.getName)
                            .collect(Collectors.toList());

forEach: Schleifenverarbeitung

    list.stream
        .filter(item -> !item.getName.equals("Tanaka"))
        .forEach({
            item -> throw new Exception(
                "don't tanaka exception."
            )
        });

reduzieren: Elemente aggregieren

    int total = list.stream()
                    .reduce((base, value) -> {
                        return base + value;
                    });

Inhalt auflisten

List<int> list = Lists.newArrayList();

        list.add(1);
        list.add(2);
        list.add(3);

Was ich nicht verstanden habe

1: Warum kann ich eine Methode wie "item.getName" verwenden? -> Es gibt eine Modellklasse "Student", deren Name aus SQL stammt. Wenn die Liste durch "List list" definiert ist, Da die Liste von Stream zerlegt und in item eingefügt wird, Sie können sehen, dass der Elementtyp "Student" ist. Sie können also die Methoden verwenden, die in der Student-Klasse vorhanden sind! !! Da die Methode getName einen String zurückgibt, gibt es kein Problem mit dem Rückgabewert.

Schülerklasse

@Data
@Builder
class Student {
    private String name;
}

Stream.java

  List<Student> list = Lists.newArrayList();

  List<String> tanakaList = list.stream
                                .map(item -> item.getName.equals())
                                .collect(Collectors.toList())

Zusammenfassung

Ich war nicht an Lambda gewöhnt und der Stream war in einem schlechten Zustand, aber es war gut, weil die Menge an Code überwältigend reduziert wurde, als ich versuchte, ihn zu verwenden. Der größte Vorteil ist, dass die Verschachtelungstiefe sofort beseitigt wurde. Als ich wusste, dass es so praktisch ist, dachte ich, ich würde es nicht so benutzen, als wäre ich in Zukunft davon besessen. Also dachte ich, ich hätte Angst, wenn es irgendwelche Nachteile gäbe, die ich noch nicht kannte. (Aber ich denke, ich werde es für eine Weile benutzen, danke, dass du es mir erzählt hast ...)

Recommended Posts

[Java] Stream (Filter, Map, ForEach, Reduce)
[Java] Stream API / Map
JAVA (Karte)
Java8-Listenkonvertierung mit Stream Map
[Java] Servlet-Filter
Probieren Sie Java 8 Stream aus
Java Stream API
[Java] forEach-Methode
[Java] Kartenvergleich
Java 8 studieren (Stream)
Java Stream-Beendigung
[Java] Stream-Verarbeitung
Java 9 Optional :: stream
[Java] Filterstapelspuren
[Java] Stream Collectors Hinweis
[Java] Erstellen Sie einen Filter
[Java] Stream API-Stream-Generierung
Stream-API-Zuordnungsmethode
Enum Reverse Map Java
Informationen zur Java8-Stream-Reduzierung
Bidirektionale Java-Kartenbibliothek
Grobe Zusammenfassung des Java8-Streams
[Java] Verwendung von Map
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Java Stream API Spickzettel
Java Stream API in 5 Minuten
Java8-Stream, Zusammenfassung des Lambda-Ausdrucks
Verwenden Sie den schnellen Filter und die Karte
Verwendung von Java Map
[Java] Stream API - Stream-Beendigungsverarbeitung
[Java] Stream API - Stream Zwischenverarbeitung
Java Stream kann nicht wiederverwendet werden.
[Java] Einführung in die Stream-API
[Java11] Stream Usage Summary -Basics-
Java-Anwendung für Anfänger: Stream
[Java] Stream API Zwischenoperation