** 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.
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.