Java Lambda Ausdruck

Was ist ein Lambda-Ausdruck?

Dies ist die in Java 8 eingeführte Beschreibungsmethode. Die Stream-API [^ 1], die ebenfalls in Java 8 eingeführt wurde, basiert auf der Verwendung von Lambda-Ausdrücken. Daher scheint es vorteilhaft zu sein, Lambda-Ausdrücke zu lernen.

[^ 1]: Eine API für die Verarbeitung von Sammlungen wie Arrays und Listen, mit der Sie die Wertaggregation und Datenverarbeitung mit leicht verständlichem Code implementieren können.

Ein weiterer Vorteil der Verwendung von Lambda-Ausdrücken besteht darin, dass Sie das "Schreiben einer Funktionsschnittstelle mit anonymen Klassen" vereinfachen können.

Wie schreibe ich einen Lambda-Stil

Die grundlegende Methode zum Schreiben eines Lambda-Ausdrucks lautet wie folgt.

Schnittstellenname Objektname=Argument (kann mehrere empfangen)->wird bearbeitet;

Sie müssen den Typ des Arguments nicht angeben, da der Compiler die Typinferenz ausführt. ~~ Wenn es nur ein Argument gibt, müssen Sie nicht zurückkehren, das Argument () einschließen, den Prozess {} schreiben usw. ~~ ※Korrektur {} Und return kann weggelassen werden, wenn es in {} nur eine Anweisung gibt, die return ~ ist. Die Anzahl der Argumente spielt keine Rolle.

Implementierung mit anonymen Klassen

Eine anonyme Klasse ist eine lokale Klasse, die eine Schnittstelle implementiert und den Deklarationsteil weglässt. Mit Lambda-Ausdrücken können Sie präzise und klar schreiben, ohne anonyme Klassen zu verwenden.

Wenn Sie beispielsweise die folgende anonyme Klasse haben:

main.java



interface InterfaceTest{
    //Abstrakte Methode
    public String name(String name);
}
 
public class Main {
 
    public static void main(String[] args) {
 
        //Wie schreibe ich mit einer anonymen Klasse
        InterfaceTest greeting = new InterfaceTest() {
            //überschreiben
            public String name(String name) {
                return "Hello " + name;
            }
        };
        System.out.println(greeting.name("momoji"));
    }
 
}

Oben sieht es so aus, als würden Sie eine Instanz einer Schnittstelle erstellen, aber Sie erstellen tatsächlich eine Instanz einer anonymen Klasse mit einer Schnittstelle.

Ausführungsergebnis ↓

Hello momoji

Implementierung im Lambda-Stil

Schreiben wir dies mit einem Lambda-Ausdruck um.

main.java


interface InterfaceTest{
    //Abstrakte Methode
    public String name(String name);
}
 
public class Main {
 
    public static void main(String[] args) {
 
        //Wie schreibe ich mit Lambda-Ausdruck
        InterfaceTest greeting = (name) -> {
            return "Hello " + name;
        };
        System.out.println(greeting.name("momoji"));
    }
 
}

Der von der Begrüßungsmethode auszuführende Verarbeitungsinhalt ist in {} beschrieben. Es ist kürzer und es ist einfacher zu sehen, was Sie tun. Außerdem müssen Sie den Argumenttyp nicht mehr angeben.

Ausführungsergebnis ↓

Hello momoji

Schreiben Sie die forEach-Anweisung mit einem Lambda-Ausdruck kürzer

Java hat dieselben Eigenschaften wie die for-each-Anweisung, und es gibt eine erweiterte for-Anweisung. Es hat die Eigenschaft, die angegebene Verarbeitung für alle Elemente eines Arrays oder einer Liste durchzuführen.

Wie schreibe ich eine erweiterte for-Anweisung?

for (Datentyp Variablenname:Liste und Array){
wird bearbeitet;
  ...
}

Um alle Elemente der Liste der Reihe nach auszugeben, schreiben Sie die erweiterte for-Anweisung wie folgt.

main.java


main.java
class Main {
    public static void main (String[] args) {

            List<String> list = new ArrayList<>();
            list.add("a");
            list.add("b");
            list.add("c");

            //Für Aussage erweitert
            for(String l : list) {
                System.out.println(l);
            }

        }
}

Im obigen Beispiel ① Definieren Sie eine String-Typ-Liste "Liste" (2) Verwenden Sie die Add-Methode, um die Liste nacheinander mit den Elementen "a", "b" und "c" zu füllen. (3) Geben Sie die Listenelemente einzeln mit der erweiterten for-Anweisung aus.

Ich mache das

Das Ausführungsergebnis ist wie folgt.

a
b
c

Dies kann mit Lambda-Ausdrücken und forEach-Anweisungen noch kürzer gemacht werden.

main.java


class Main {
    public static void main (String[] args) {
 
            List<String> list = new ArrayList<>();
            list.add("a");
            list.add("b");
            list.add("c");
            
            //Für Aussage erweitert
            // for(String l : list) {
            //  System.out.println(l);
            // }

            //Für jede Anweisung mit Lambda-Ausdruck
            list.forEach(l -> System.out.println(l));
            
        }
}

Ausführungsergebnis ↓

a
b
c

Ich konnte das, was ich schrieb, anpassen, indem ich 3 in einer Zeile trainierte. Dies kann mit "Methodenreferenzen" noch kürzer gemacht werden.

Was ist eine Methodenreferenz?

Dies ist auch eine aus Java 8 eingeführte Notation. Eine Methodenreferenz ist ein Mechanismus, mit dem Sie auf eine Methode als Argument der Methode verweisen können. Sie können vordefinierte Methoden ohne Argumente aufrufen.

Die Methodenreferenz ist wie folgt geschrieben.

Name der Klasse::Methodenname

Schreiben Sie nach dem Klassennamen "::" und den Namen der Methode, die Sie aufrufen möchten. Im Methodennamen ist kein () erforderlich.

Ich werde versuchen, es sofort mit dem Lambda-Typ zu kombinieren.

main.java


//Lambda-Ausdruck mit Methodenreferenz
list.forEach(System.out::println);

Ausführungsergebnis ↓

a
b
c

Die Kombination von Lambda-Ausdrücken und Methodenreferenzen hat es möglich gemacht, viel kürzer zu schreiben.

Recommended Posts

[Java] Lambda-Ausdruck
Java Lambda Ausdruck
Variationen von Java-Lambda-Ausdrücken
Java 8 Lambda-Ausdruck Feature
Java Lambda Ausdruck [Notiz schreiben]
Überprüfen Sie java8 ~ Lambda Typ ~
Wieder Java-Lambda-Ausdruck
[Java] Funktionsschnittstelle / Lambda-Ausdruck
Java8-Stream, Zusammenfassung des Lambda-Ausdrucks
Java Basic Learning Content 9 (Lambda-Ausdruck)
Hallo Java Lambda
Was ist ein Lambda-Ausdruck (Java)
Lassen Sie uns nun den Java-Lambda-Ausdruck rekapitulieren
Quarkus rettet Java Lambda! ??
Verstehen Sie Java 8 Lambda-Ausdrücke
Über Java-Lambda-Ausdrücke
Einführung in den Lambda-Stil
Erläutern Sie Java 8-Lambda-Ausdrücke
Injektion von Java-Tabellenausdrücken
Zusammenfassung der regulären Ausdrücke von Java
Verwendung der Java-API mit Lambda-Ausdrücken
Java 8 startet jetzt ~ für jeden und Lambda-Ausdruck ~
Überdenken des Entwurfsmusters mit Java8 Lambda-Ausdruck & Stream - Befehlsmuster -
[Java] Einführung in den Lambda-Ausdruck
Was ist ein Lambda-Ausdruck?
Java
Erste Schritte mit älteren Java-Ingenieuren (Stream + Lambda)
Java
Überdenken von Entwurfsmustern mit Java8-Lambda-Ausdrücken und Stream - Null-Objektmuster -
Überdenken des Java8-Lambda-Ausdrucks- und Stream-Entwurfsmusters - Muster der Vorlagenmethode -
Weisen Sie Variablen Java8-Lambda-Ausdrücke zu und verwenden Sie sie erneut
Überdenken des Java8-Lambda-Ausdrucks- und Stream-Entwurfsmusters - Muster der Verantwortungskette -
[Einführung in Java] Über Lambda-Ausdrücke
Über Lambda, Stream, LocalDate von Java8
Ist Java unter AWS Lambda langsam?
Hallo Welt mit AWS Lambda + Java
Versuchen Sie einen If-Ausdruck in Java
Der Ursprung von Java-Lambda-Ausdrücken
Verwendung von Java-Lambda-Ausdrücken
Java lernen (0)
Java studieren ―― 3
[Java] -Array
Java geschützt
[Java] Anmerkung
[Java] Modul
Java-Array
Java studieren ―― 9
Java Scratch Scratch
Java-Tipps, Tipps
Java-Methoden
Java-Methode
Implementieren Sie API Gateway Lambda Authorizer in Java Lambda
Java (Konstruktor)
Java-Array
Java (überschreiben)
Java (Methode)
Java Day 2018
Java-Zeichenfolge
Java statisch