Ich habe am JJUG CCC 2018 Herbst teilgenommen. Ich habe den Inhalt der # ccc_g4-Vorlesung von @ skrb persönlich zusammengefasst.
** Stream ist ein einfacher Iterator **
Mohamed Ali tanzt wie ein Schmetterling und sticht wie eine Schüssel Es ist ein Lambda-Ausdruck, der wie eine Funktion geschrieben ist und sich wie eine Klasse verhält.
Funktion <============ Lambda-Ausdruck ============> Klasse
Verarbeitung: Beschrieben wie eine Funktion, Zustand + Verarbeitung
Benimm dich wie eine Klasse
Viele Leute, die es einmal versucht haben, es aber nicht verstanden haben
Beispiel: Um ein Omelett herzustellen, beträgt die Hitzedenaturierung des Proteins 60 Grad und es kommt zu einer Mailerd-Reaktion ... Selbst wenn Sie das wissen, können Sie es schaffen, ohne sich darüber Gedanken zu machen, oder? ??
** Da es sich um ein neues Konzept handelt, gewöhnen Sie sich daran, anstatt es zu lernen. Sie müssen den Mechanismus erst verstehen, nachdem Sie mit dem Anruf begonnen haben. ** **.
Ich denke, dass es eher verarbeitet und verarbeitet wird als eine Schleife. Ich möchte keine Klasse machen, um es zu verarbeiten. → Lambda-Ausdruck So beschreiben Sie die Verarbeitung, bei der nur Argumente und Rückgabewerte ermittelt werden
(Argument) -> {
toDO
return val;
}
** Stellen Sie wieder zusammen, was Sie aus Sicht der Datenverarbeitung tun möchten. Vereinfachen Sie den Prozess und teilen Sie ihn in 1 Prozess-> 4 einfache Prozesse-> Schließlich mit toList () usw. Es ist gut, mit jedem zu beginnen und nach und nach Map-> Filter usw. zu versuchen. **
Funktion <T, R> mit 1 Argument Rückgabewert
1 Argument Rückgabewert Boolesches Prädikat
// Grundlegender Typ
(String s) -> { return s.length();
// Typ ist optional
(s) -> { return s.length();
// return kann für eine Zeile weggelassen werden
(s) -> s.length();
// () kann weggelassen werden, wenn es sich um ein Argument handelt
s -> s.length();
Die IDE erledigt dies für Sie, auch wenn Sie sich nicht daran erinnern.
Beispiel: Extrahieren Sie Wörter, die mit einem niedrigeren a beginnen, aus der Liste.
example.java
List<String> words = new ArrayList<>() {
{
add("apple");
add("toast");
add("about");
add("sun");
}
};
var results = words.stream()
.map(word -> word.toLowerCase())
.filter(word -> word.startsWith("a"))
.collect(Collectors.toList());
System.out.println(results);
Stream ist null garantiert, sodass Sie für ein Array von Ausgaben keine neue ArrayList () erstellen müssen. Es gibt einige, die Sie nicht mit Stream spielen können, also übertreiben Sie es nicht.
Q&A Frage 1: Ich denke, der Abschnitt zur Konvertierungsverarbeitung kann sich auf die Methode beziehen. A1. Sie können schreiben. Es ist jedoch nicht sehr vorzuziehen, da es für den Leser nicht freundlich ist. F2. Die Ausnahme funktioniert nicht. Gibt es eine bewährte Methode? A2. Es gibt keine richtige Antwort. Benutze das eine oder das andere
Die Person selbst hat bereits das Präsentationsmaterial veröffentlicht, sodass dieser Artikel nur als Referenz dient.
Recommended Posts