Über Lambda, Stream, LocalDate von Java8

Zweck

Beherrschen Sie die Verwendung von Lambda, Stream und LocalDate, damit Sie es regelmäßig verwenden können!

Lambda

Was ist Lambda?

Lambda ist eine Methode zum Definieren und Verwenden von Methoden als Variablen. Mit Lambda können Sie weniger Codezeilen schreiben. Sie können die definierte Methode auch als Argument an eine andere Methode übergeben. Schreiben Sie Methoden in Lambda, die nur wenige Male verwendet werden und von anderen Klassen nicht referenziert werden!

Grundlegendes Schreiben

Da Lambda alle zu überschreibenden Funktionsnamen weglässt, muss die Schnittstelle geerbt werden, in der nur eine Methode definiert ist. Java bietet bereits funktionale Schnittstellen, die entsprechend der Anzahl der Argumente und Rückgabewerte verwendet werden können. Wir werden sie daher verwenden.

** * Achtung: Wenn Sie primitive Typen wie int und double für Argumente und Rückgabewerte verwenden, verwenden Sie die entsprechenden Schnittstellen! (Weil es einen Leistungsunterschied gibt) ** Beispiel) // Wenn Sie int senden und int empfangen möchten Function → IntUnaryOperator

Die detaillierten Arten von Schnittstellen sind unten aufgeführt. http://www.ne.jp/asahi/hishidama/home/tech/java/functionalinterface.html#h_Function

Es gibt einen Argumentrückgabewert, Function

Es ist als Argumenttyp und Rückgabetyp definiert. Die Ausführung verwendet die Methode apply (). Es gibt auch eine BiFunktion, die zwei Argumente akzeptieren kann. Wenn Sie den int-Typ für das Argument und den Rückgabewert angeben möchten, verwenden Sie "IntUnaryOperator" anstelle von "Function". Die Ausführungsmethode lautet applyAsInt ().


import java.util.function.*;

//In der Hauptsache
Function<String, String> f = (i) -> { return i +"OK"; };
System.out.println(f.apply("test"));  // testOK

Es gibt nur Argumente, Verbraucher

Gibt den Typ des Arguments an. Die Ausführung verwendet die Methode accept (). Wenn Sie das Argument als int-Typ angeben möchten, verwenden Sie "IntConsumer".

import java.util.function.*;

//In der Hauptsache
Consumer<String> c = i -> { System.out.println(i); };
c.accept("testOK");  // testOK

Es gibt nur einen Rückgabewert, Lieferant

Gibt den Rückgabetyp an. Die Ausführung verwendet die Methode get (). Wenn Sie den Rückgabewert als int-Typ angeben möchten, verwenden Sie "IntSupplier". Die Ausführungsmethode ist "getAsInt ()".

import java.util.function.*;

//In der Hauptsache
Supplier<String> s = () -> { return "testOK"; };
System.out.println(s.get());  // testOK

Prädikat, das ein Argument akzeptiert und einen booleschen Wert zurückgibt

Die Ausführung verwendet die Methode test (). Der Unterschied zwischen der Booleschen Spezifikation von Function und Predicate besteht darin, dass Function Boolean zurückgibt, während Predicate Boolean zurückgibt, einen primitiven Typ. Wenn Sie das Argument als int-Typ angeben möchten, verwenden Sie "IntPredicate".

import java.util.function.*;

//In der Hauptsache
Predicate<String> p = (i) -> { return i.equals("AAA"); };
System.out.println(p.test("AAA"));  // true

Stream

Was ist Stream?

Sie können einen Listentyp für Anweisungen usw. präzise schreiben. Sie können Lambda auch als Methodenargument verwenden. Importieren Sie bei Verwendung "java.util.stream".

Betrachten Sie zunächst eine normale for-Anweisung.

for(int i; i < 10; i++){
    System.out.println(i+"Dies ist das zweite Mal");
}

Wenn Sie dies in Stream schreiben

IntStream.range(0, 10).forEach(i -> System.out.println(i+"Dies ist das zweite Mal"));

Es wird einfach sein.

Wenn Sie sich für die Elemente von ArrayList entscheiden möchten,

//Für die Variablenliste
list.stream().forEach(i -> [wird bearbeitet])

Sie können so schreiben.

Zwischenbetrieb und Abbruchbetrieb

Der Stream verfügt über eine Zwischenoperationsmethode, die jedes Element konvertiert, und eine Terminaloperationsmethode, die den Wert schließlich zurückgibt oder speichert. Bitte beachten Sie, dass die konvertierten Elemente erst gespeichert werden, wenn der Beendigungsvorgang ausgeführt wird.

Die Zwischenoperationen sind wie folgt. .skip (n) ... Verwerfe die ersten n Elemente. .limit (n) ... Extrahiere nur die ersten n Elemente. .filter (i-> [Bedingung]) ... Extrahieren Sie diejenige, die die Bedingung erfüllt. .distinct () ... Duplikate entfernen. .sorted () ... In natürlicher Reihenfolge sortieren. Es ist auch möglich, eine Sortierregel in Klammern anzugeben. .map (i-> [Verarbeitung]) ... Alle Elemente verarbeiten.

Die Beendigungsoperationen sind wie folgt. .forEach (i-> [Processing]) ... Ausgabe. .findFirst () ... Gibt das erste Element zurück. .collect () ... Erstelle das Ergebnis. (Die Verarbeitung ändert sich je nach Argument.) .count () ... Gibt die Anzahl der Elemente zurück. .allMach ([Bedingung]) .anyMach ([Bedingung]) .noneMach ([Bedingung]) ... Bestimmen Sie, ob eine Übereinstimmung vorliegt.

LocalDate

Was ist das lokale Datum?

Eine Klasse, die Daten verarbeitet. Es ist einfacher zu handhaben als die Kalenderklasse, die ich verwendet habe. Importieren und verwenden Sie java.time.LocalDate.

Wir werden die Operationen, die im Folgenden häufig verwendet werden, ansprechen.

Aktuelles Datum abrufen

LocalDate date = LocalDate.now();

Datum eingestellt

Stellen Sie 2020-01-01 ein localDate date = LocalDate.of(2020, 1, 1); Im Gegensatz zum Kalender müssen Sie nicht -1 Monat!

Zeichenfolge auf Datum gesetzt

Importieren Sie java.time.format.DateTimeFormatter.

date = LocalDate.parse("20200101",DateTimeFormater.ofPattern("yyyyMMdd")); Auch unten möglich date = LocalDate.parse("2020-01-01");

Verabredung bekommen

Jahr date.getYear(); Mond date.getMonth(); Tag date.getDayOfMonth(); Tag date.getDayOfWeek();

Addition und Subtraktion

+10 Tage date.plusDays(10); -Der 10 .. date.miusDays(10); +2 Jahre date.plusYears(2);

Unterschied zwischen Daten

Importieren Sie java.time.temporal.ChronoUnit.

Datumsunterschied long diff = ChronoUnit.DAYS.between(date1, date2);

Referenzmaterial

Lambda http://www.ne.jp/asahi/hishidama/home/tech/java/functionalinterface.html#h_Function https://qiita.com/sano1202/items/64593e8e981e8d6439d3

Stream http://www.ne.jp/asahi/hishidama/home/tech/java/stream.html https://qiita.com/kumazo/items/0876c5b251ecc131c960 https://qiita.com/kumazo/items/104fa685da8705b8cfd8 https://qiita.com/kumazo/items/284098c530fceb05805c

LocalDate https://blog.y-yuki.net/entry/2016/09/15/003000) https://m-shige1979.hatenablog.com/entry/2017/03/10/080000

Recommended Posts

Über Lambda, Stream, LocalDate von Java8
Über Java-Lambda-Ausdrücke
Über Java-Instanzen
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Java8-Stream, Zusammenfassung des Lambda-Ausdrucks
Verwenden Sie Java-Lambda-Ausdrücke außerhalb der Stream-API
[Einführung in Java] Über Lambda-Ausdrücke
Über Biocontainer fastqc und Java
[Einführung in Java] Informationen zur Stream-API
Überdenken des Java8-Lambda-Ausdrucks- und Stream-Entwurfsmusters - Muster der Verantwortungskette -
Grundlegender Verarbeitungsablauf von Java Stream
Der Ursprung von Java-Lambda-Ausdrücken
Heutzutage Java Lambda Expressions und Stream API
[Java-Anfänger] Informationen zur Initialisierung eines mehrdimensionalen Arrays
[Grundkenntnisse in Java] Informationen zur Typkonvertierung
Über die Java-Schnittstelle
[Java] Über Arrays
Probieren Sie Java 8 Stream aus
Java Stream API
Etwas über Java
Wo ist mit Java?
Informationen zu Java-Funktionen
Über Java-Threads
[Java] -Schnittstelle
Über die Java-Klasse
Informationen zu Java-Arrays
Hallo Java Lambda
[Java] Lambda-Ausdruck
Java 8 studieren (Stream)
Über Java-Vererbung
Über Schnittstelle, Java-Schnittstelle
[Java] Übersicht über Java
Java Stream-Beendigung
Java Lambda Ausdruck
[Java] Stream-Verarbeitung
Über Java Var
Über Java Literal
Java 9 Optional :: stream
Informationen zu Java-Befehlen
Informationen zur Beschreibungsreihenfolge der Java-Systemeigenschaften
Über die Idee anonymer Klassen in Java
[Java] Zusammenfassung, wie Lambda-Ausdrücke weggelassen werden
[Für Anfänger] Über Lambda-Ausdrücke und Stream-API
Überdenken des Entwurfsmusters mit Java8 Lambda-Ausdruck & Stream - Befehlsmuster -
Informationen zur Java-Protokollausgabe
Informationen zur Java-Funktionsschnittstelle
Abgelaufene Java-Sammlung
Voraussichtliche Funktionen von Java
Java, über zweidimensionales Array
[Java] Bedeutung der serialVersionUID
Über die Klassenteilung (Java)
[Java] Stream Collectors Hinweis
Informationen zum Trennen () von HttpURLConnection
Über [Java] [StreamAPI] allMatch ()
Informationen zur Java StringBuilder-Klasse
[Java Silver] Zusammenfassung der Punkte im Zusammenhang mit Lambda-Ausdrücken
[Für Anfänger] Verstehen Sie schnell die Grundlagen von Java 8 Lambda
NIO.2 Überprüfung von Java
Bewertung von Java Shilber
Java Neutral Lambda Tabellenausdruck 1