[JAVA] Jetzt ist es an der Zeit, mit der Stream-API zu beginnen

Ich habe am JJUG CCC 2018 Herbst teilgenommen. Ich habe den Inhalt der # ccc_g4-Vorlesung von @ skrb persönlich zusammengefasst.

Was ist Stream?

** Stream ist ein einfacher Iterator **

Stehende Position im Lambda-Stil

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

Warum verstehst du Stream nicht?

Viele Leute, die es einmal versucht haben, es aber nicht verstanden haben

Wenn es eine neue Technologie gibt ...

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

Stream = Datenfluss

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;
}

Was ist eigentlich Stream?

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

Häufig verwendete Lambda-Formel

Funktion <T, R> mit 1 Argument Rückgabewert 1 Argument Rückgabewert Boolesches Prädikat 1 Argument Kein Rückgabewert Consumer Lieferant ohne Argument und Rückgabewert

Grundlegendes Schreiben

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

Muster, an die Sie sich zumindest erinnern sollten

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

Ergänzung

Die Person selbst hat bereits das Präsentationsmaterial veröffentlicht, sodass dieser Artikel nur als Referenz dient.

Recommended Posts

Jetzt ist es an der Zeit, mit der Stream-API zu beginnen
Erste Schritte mit Doma-Einführung in die Kriterien-API
Wie fange ich mit schlank an?
[java8] Um die Stream-API zu verstehen
Java 8 ~ Stream API ~ startet jetzt
[DDD] Was ist die am besten zugängliche Architektur, um mit domänengesteuertem Design zu beginnen?
Ich habe versucht, mit Web Assembly zu beginnen
[Hinweis] Erste Schritte mit Rspec
Java 8 startet jetzt ~ Datums- und Uhrzeit-API ~
Ich habe versucht, die Stream-API zusammenzufassen
So konvertieren Sie ein Array von Strings mit der Stream-API in ein Array von Objekten
Erste Schritte mit der Doma-Projektion mit der Criteira-API
Erste Schritte mit Eclipse Micro Profile
Versuchen Sie, den API-Schlüssel von Redmine mit Ruby zu erhalten
Rails-Anfänger haben versucht, mit RSpec zu beginnen
Beginnen Sie mit Gradle
Einführung in "Einführung in die praktische Rostprogrammierung" (Tag 3)
Beginnen Sie mit serverlosem Java mit dem leichtgewichtigen Framework Micronaut!
Erste Schritte mit Doma-Dynamic Erstellen von WHERE-Klauseln mit der Kriterien-API
Erste Schritte mit Reactive Streams und der JDK 9 Flow API
Beginnen Sie mit Spring Boot
So erhalten Sie Werte in Echtzeit mit TextWatcher (Android)
Ich möchte die Java 8 DateTime-API (jetzt) langsam verwenden.
[Java] [Play Framework] Bis das Projekt mit Gradle gestartet wird
Greifen Sie mit Get on Android auf die Web-API zu und verarbeiten Sie Json (vorerst Java).
Was ich mit der Redmine REST API süchtig gemacht habe
[Java] Einführung in die Stream-API
Die Zeit ist falsch mit der Anwendung, die auf dem Docker-Container gestartet wurde
Erste Schritte mit JDBC mit PostgresSQL unter MacOS
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
Konvertieren Sie ein zweidimensionales Array mit der Java 8 Stream-API in das CSV-Format
So erhalten Sie die neueste Live-Übermittlungs-ID für einen Kanal ohne Verwendung der YouTube-Daten-API
Auf Anforderung wird der Zugriff auf die Ressource beim Push mit Docker verweigert
Einfache Codeüberprüfung für den Einstieg in Jenkins / SonarQube: Statische Analyse
Zurück zum Anfang, Erste Schritte mit Java ② Steueranweisungen, Schleifenanweisungen
Das Designkonzept der Datums- und Uhrzeit-API von Java ist interessant
Beginnen wir mit der parallelen Programmierung
[Einführung in Java] Informationen zur Stream-API
Memo mit Struts2 + Ajax zu bekommen
[IOS] Was tun, wenn das Bild mit einer Farbe gefüllt ist?
Rufen Sie den Typ eines Elements eines Arrays ab, um festzustellen, ob es sich um ein Array handelt
Einführung in "Einführung in die praktische Rostprogrammierung" (Tag 4) Aufrufen von Rust von Ruby
Android-Entwicklung - WEB-Zugriff (GET) Versuchen Sie, Daten durch Kommunikation mit der Außenwelt abzurufen. ~
[Rails] So erhalten Sie die aktuell mit devise angemeldeten Benutzerinformationen
Wenn die HTTP-Methode nicht angegeben ist, fordert die Browserseite GET an
Wie man nur die Zeit mit Rails vergleicht (von welcher Zeit bis zu welcher Zeit, so etwas wie)
Ihnen, denen im Feld "Keine Stream-API verwenden" mitgeteilt wurde
Java8 / 9-Anfänger: Streamen Sie API-Suchtpunkte und wie Sie damit umgehen
Erste Schritte mit dem Doma-Criteria API Cheet Sheet
Systemzeit mit Maven an MANIFEST.MF ausgeben
Einführung in Java zum ersten Mal # 2
Versuchen Sie es mit der Stream-API in Java