Ein Java-Benutzer hat vor einem Dutzend Jahren versucht, die Funktionen von Java8 (Lambda Style Edition) zu untersuchen.

Einführung

Vor kurzem hatte ich aufgrund meiner Arbeit die Möglichkeit, Java zu verwenden. Ich habe mein altes Java (1.3) Wissen aktualisiert.

Was ist ein Lambda-Ausdruck?

Dies ist eine Funktion zum einfachen Implementieren einer Funktionsschnittstelle.

Das allein ist erfrischend, deshalb möchte ich es anhand eines Beispiels erklären.

Vergleichen Sie Lambda-Ausdrücke mit Code

Code, der keine Lambda-Ausdrücke verwendet

public static void main(String[] args) {

  class Sample implements Runnable {
    public void run() {
      System.out.println("I Love Pengin!");
    }
  }

  Runnable runner = new Sample();
  times( 10, runner );
}

public static void times( int count, Runnable runner ) {
  for( int i = 0; i < count; i++ ) {
    runner.run();
  }
}

Code mit Lambda-Ausdruck

public static void main(String[] args) {

  funcCall( 10, () -> System.out.println("I Love Pengin!") );
}
public static void times( int count, Runnable runner ) {
  for( int i = 0; i < count; i++ ) {
    runner.run();
  }
}

Was ist gut zu benutzen?

Das Beispiel ist die Verarbeitung der Funktion "times", die die angegebene Verarbeitung mehrmals wiederholt. Wenn Sie sie vergleichen, können Sie sehen, dass der Lambda-Ausdruck ziemlich vollständig ist.

Die Methode zum Ersetzen eines Teils der Verarbeitung durch ein anderes Objekt wird als Delegierung bezeichnet. Durch die Verwendung der Lambda-Formel denke ich, dass der Vorteil darin besteht, dass diese Delegation viel einfacher zu schreiben ist.

Wie schreibe ich einen Lambda-Stil

Format

Sehen wir uns das Format an, wenn Sie den Lambda-Ausdruck verwenden

() -> System.out.println("I Love Pengin!")
  1. Das erste () repräsentiert das Argument der Methode. Wir verwenden diesmal keine Argumente, aber Sie können sie verwenden.
  2. -> beschreibt den tatsächlichen Verarbeitungsinhalt. Wenn der Verarbeitungsinhalt mehrere Prozesse umfasst, schreiben Sie hier "-> {Verarbeitung}".

Lambda-Ausdruck mit Argumenten

Beim Benutzen

Durch Angabe des Arguments des Lambda-Ausdrucks kann das Argument während der Verarbeitung verwendet werden.

(i) -> System.out.println("I Love Pengin!" + i)

Bei der Herstellung von

Es ist erforderlich, die Funktionsschnittstelle entsprechend dem zu verwendenden Argumenttyp und Rückgabewert ordnungsgemäß zu verwenden. Wenn es ein Argument und keinen Rückgabewert gibt, ist dies wie folgt.

public static void times( int count, Consumer<Integer> runner ) {
  for( int i = 0; i < count; i++ ) {
    runner.accept(new Integer(i));
  }
}

Die ordnungsgemäß zu verwendende Schnittstelle ist wie folgt.

Art Funktionsschnittstelle Methode
0 Argumente, die keinen Wert zurückgeben Runnable run
1 Argument, das keinen Wert zurückgibt Consumer accept
2 Argumente, die keinen Wert zurückgeben BiConsumer accept
0 Argumente, die einen Wert zurückgeben Supplier get
1 Argument, das einen Wert zurückgibt Function apply
2 Argumente, die einen Wert zurückgeben BiFunction apply
1 Argument, das einen booleschen Wert zurückgibt Predicate test
Zwei Argumente, die einen booleschen Wert zurückgeben BiPredicate test
1 Argument, das das Operationsergebnis zurückgibt UnaryOperator test
2 Argumente, die das Operationsergebnis zurückgeben BinaryOperator test

Recommended Posts

Ein Java-Benutzer hat vor einem Dutzend Jahren versucht, die Funktionen von Java8 (Lambda Style Edition) zu untersuchen.
Ein Java-Benutzer hat vor über einem Dutzend Jahren versucht, die Funktionen von Java8 (Generics) zu untersuchen.
Übergeben Sie die im Java8-Lambda-Ausdruck filter () verwendeten Bedingungen als Parameter
Weisen Sie Variablen Java8-Lambda-Ausdrücke zu und verwenden Sie sie erneut
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Die Idee von C # (Lambda-Ausdruck, für Satz) zu kauen
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe den Eingabe- / Ausgabetyp von Java Lambda ~ Map Edition ~ ausprobiert
Ersetzen Sie durch einen Wert entsprechend der Übereinstimmung mit einem regulären Java-Ausdruck
Vom jungen Java (3 Jahre) bis zu Node.js (4 Jahre). Und der Eindruck, nach Java zurückzukehren
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
Ein kurzer Rückblick auf Java in den letzten fünf Jahren
Was ist ein Lambda-Ausdruck (Java)
Der Ursprung von Java-Lambda-Ausdrücken
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
So finden Sie heraus, welche Java-Version der Klassendatei kompiliert wurde
Ich habe versucht, den Zugriff von Lambda → Athena mit AWS X-Ray zu visualisieren
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Ich habe versucht, Java-Lambda-Ausdrücke zusammenzufassen
Ausgabe des Buches "Einführung in Java"
Was ich versucht habe, als ich alle Felder einer Bohne bekommen wollte
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
Überprüfen Sie das ID-Token eines von AWS Cognito in Java authentifizierten Benutzers
[Kleine Geschichte] Ich habe versucht, die Java-ArrayList etwas komfortabler zu gestalten
[Java] Wenn Sie eine Zeichenfolge in die switch-Anweisung einfügen, müssen Sie sie zu einem konstanten Ausdruck machen
Ich habe versucht, ein Tool zum Vergleichen von Amazon-Produktpreisen auf der ganzen Welt mit Java, der Amazon Product Advertising API und der Currency API (29.01.2017) zu erstellen.
Verwandeln Sie sich von einer normalen Klasse in einen Lambda-Stil
Machen Sie einen Rand links vom TextField
[Java] Zusammenfassung, wie Lambda-Ausdrücke weggelassen werden
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, eine Website für das Studium von DUO3.0 zu entwickeln.
Stellen Sie die Zeit von LocalDateTime auf eine bestimmte Zeit ein
Verwendung der Java-API mit Lambda-Ausdrücken
Java 8 startet jetzt ~ für jeden und Lambda-Ausdruck ~
Ich habe versucht, den Block mit Java zu brechen (1)
Java Willkommen im Sumpf der zweidimensionalen Arrays
[Java] Schneiden Sie einen Teil der Zeichenfolge mit Matcher und regulären Ausdrücken aus