Ich habe Javas Lambda-Ausdruck Stream-API ein halbes Jahr nach dem Start von Java überprüft.

Was ist eigentlich ein Lambda-Typ?

** Technologie eingeführt von Java SE 8 **

Mit Lambda-Ausdrücken können Sie Multithread-Programme mit mehreren Prozessorkernen auf heutigen Computern mit wesentlich einfacherem Code als je zuvor schreiben.

Zitat Lambda-Ausdrücke und Stream-APIs machen die Java-Programmierung so einfach! - Warum sollten Sie jetzt zu Java SE 8 wechseln? https://builder.japan.zdnet.com/sp_oracle/35065645/

Lambda-Ausdrücke scheinen die Codierung zu vereinfachen.

Im Moment habe ich das Gefühl, dass ich es definitiv verwenden kann, wenn ich es im Lambda-Stil verwenden kann.

Angenommen, die Liste enthält die folgenden Daten:

Aus diesen Daten werden Personen ab 40 Jahren extrahiert und in aufsteigender Reihenfolge des Alters ausgegeben. Angenommen, Sie schreiben ein Programm namens.

List<Musician> users = Arrays.asList(
new Musician(1, "Oyamada", "Sohei", 34, "Präfektur Fukuoka"),
new Musician(2, "Kishida", "Traditionell", 42, "Kyoto"),
new Musician(3, "Mukai", "Hidenori", 45, "Präfektur Fukuoka"),
new Musician(4, "Fujiwara", "Motoo", 39, "Präfektur Chiba"),)

Dies ist auch ein Zitat, jedoch bis zu Java SE 7

Unten zur Datenextraktion über 40 Jahre alt

Set<Musician> musician = new HashSet<>();
for (Musician user : users) {
    if (user.getAge() > 40 ) {
        musisian.add(user);
    }
}

So sortieren Sie die extrahierten Daten unten

List<Musician> sorted = new ArrayList<>(musician);
Collections.sort(sorted, new Comparator<Musician>() {
    public int compare(Musician m1, Musician m2) {
        return Integer.compare(m1.getAge(), m2.getAge());
    }
})

Unten in der Ausgabe der sortierten Daten

for (Musician user : sorted) {
    System.out.println(user.getFirstName());
}

Ich werde es so codieren.

Für den Prozess, den Sie erreichen möchten, deklarieren Sie eine neue Variable, die das Sortierergebnis im Zwischenprozess enthält.

Wenn Sie versuchen, diesen Prozess zu parallelisieren, wenn Sie eine Variable im Zwischenprozess deklarieren, ist ein synchroner Prozess erforderlich, die Leistung nimmt ab und die Parallelisierung wird schwieriger.

Die Wartbarkeit des Codes ist ebenfalls nicht sehr gut.

Während die wesentliche Verarbeitung die Extraktion, Sortierung und Ergebnisausgabe ist, gibt es viele Zwischenverarbeitungen.

** Also Java SE 8 **

users.Stream()
.filter(u -> u.getAge() > 40)
.sorted((m1, m2) -> Integer.compare(m1.getAge(), m2.getAge()))
.forEach(user -> System.out.println(user.getFirstName()));

Es ist überwältigend sinnlich und Sie können einfach codieren.

Was ist die Stream-API?

Sie können die Parallelisierungsverarbeitung leicht realisieren! Dieser Typ

users.parallelStream()
.filter(u -> u.getAge() > 40)
.sorted((m1, m2) -> Integer.compare(m1.getAge(), m2.getAge()))
.sequential()
.forEach(user -> System.out.println(user.getFirstName()));

users.parallelStream() Sie können die parallele Verarbeitung einfach durch Hinzufügen implementieren.

Übrigens folgendes .sequential()

Bedeutet, dass die Ausgabeverarbeitung nicht parallel verarbeitet wird.

Das Obige ist eine Zusammenfassung, die auch als Erinnerung dient.

Recommended Posts

Ich habe Javas Lambda-Ausdruck Stream-API ein halbes Jahr nach dem Start von Java überprüft.
Erste Schritte mit älteren Java-Ingenieuren (Stream + Lambda)
Java8-Stream, Zusammenfassung des Lambda-Ausdrucks
Ich habe versucht, die Java8 Stream API zu verwenden
Heutzutage Java Lambda Expressions und Stream API
Überdenken des Entwurfsmusters mit Java8 Lambda-Ausdruck & Stream - Befehlsmuster -
[Java] Lambda-Ausdruck
Java Lambda Ausdruck
[Inhouse-Lernsitzung] Java-Grundlagen - Lambda-Ausdruck und Stream-API - (13.07.2017)
[Für Anfänger] So bedienen Sie die Stream-API nach Java 8
Verwenden Sie Java-Lambda-Ausdrücke außerhalb der Stream-API
Ich habe den Eingabe- / Ausgabetyp von Java Lambda ~ Stream Version ~ ausprobiert
Überdenken von Entwurfsmustern mit Java8-Lambda-Ausdrücken und Stream - Null-Objektmuster -
Überdenken des Java8-Lambda-Ausdrucks- und Stream-Entwurfsmusters - Muster der Vorlagenmethode -
Java Neutral Lambda Tabellenausdruck 1
[Java] Stream API / Map
Java 8 Lambda-Ausdruck Feature
Java Lambda Ausdruck Memo
Java Lambda Ausdruck [Notiz schreiben]
Java 8 studieren (Lambda-Ausdruck)
Überprüfen Sie java8 ~ Lambda Typ ~
Wieder Java-Lambda-Ausdruck
[Java-Verbesserungsfall] Ich habe mit dem Programmieren begonnen, nachdem ich 30 Jahre alt war.
Behandeln Sie Ausnahmen kühl mit Java 8-Lambda-Ausdrücken und der Stream-API
Überdenken des Java8-Lambda-Ausdrucks- und Stream-Entwurfsmusters - Muster der Verantwortungskette -
Ich war seltsamerweise süchtig danach, Javas Stream-API mit Scala zu verwenden