Der Pfeiloperator -> in Java

Mohammad Irfan 12 Oktober 2023
  1. So verwenden Sie den Pfeil-Operator in Java
  2. Pfeiloperator in Java Collections
  3. Pfeiloperator im Java-Thread
Der Pfeiloperator -> in Java

Dieses Tutorial stellt vor, was der Pfeiloperator (->) in Java macht und listet auch einige Beispielcodes auf, um das Thema zu verstehen.

In Java 8 wurde ein neues Feature-Lambda-Ausdruck hinzugefügt, und gleichzeitig entstand in Java der Pfeiloperator, der verwendet wird, um einen Lambda-Ausdruck zu bilden. Es trennt die Argumente vom Ausdruckskörper.

(parameters) -> {
  statements;
} // Lambda expression having arrow

Der Lambda-Ausdruck wurde in Java 8 eingeführt und kann anstelle einer anonymen Klasse in Java verwendet werden, um den Code prägnanter und lesbarer zu machen.

Unten ist ein Beispiel dafür, wie wir eine anonyme Klasse in Java vor Java 8 erstellen.

Runnable r = new Runnable() {
  @Override
  public void run() {
    System.out.print("Run method");
  }
};

Und so können wir die obige Aufgabe mit dem Lambda-Ausdruck in Java 8 implementieren.

Runnable r = () -> System.out.print("Run method");

Beginnen wir mit einigen Beispielen, um auch die Verwendung von Lambda- und Pfeiloperatoren zu verstehen.

So verwenden Sie den Pfeil-Operator in Java

In diesem Beispiel haben wir mit dem Pfeiloperator einen Lambda-Ausdruck erstellt, der die Methode draw() der Schnittstelle Drawable implementiert. Siehe das Beispiel unten.

interface Drawable {
  public void draw();
}
public class Main {
  public static void main(String[] args) {
    int width = 20;
    // arrow operator
    Drawable d2 = () -> {
      System.out.println("Drawing width:  " + width);
    };
    d2.draw();
  }
}

Ausgabe:

Drawing width:  20

Da der Lambda-Ausdruck eine hervorragende Möglichkeit ist, prägnanten Code mit einem funktionalen Ansatz zu erstellen, können wir ihn auf verschiedene Weise im Java-Code verwenden. Sehen wir uns einige Beispiele an, wo wir es anwenden können.

Pfeiloperator in Java Collections

In diesem Beispiel filtern wir ArrayList-Daten mithilfe eines Lambda-Ausdrucks. Wir haben die Stream-API und die filter()-Methode verwendet, um das gewünschte Ergebnis zu erhalten. Sie können feststellen, dass es einfacher ist, Code mit Lambda zu erstellen als mit Nicht-Lambda-Code. Siehe das Beispiel unten.

package javaexample;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
class Product {
  int id;
  String name;
  float price;
  public Product(int id, String name, float price) {
    this.id = id;
    this.name = name;
    this.price = price;
  }
}
public class Main {
  public static void main(String[] args) {
    List<Product> list = new ArrayList<Product>();
    list.add(new Product(1, "Samsung S5", 17000));
    list.add(new Product(3, "Iphone 12", 100500));
    list.add(new Product(2, "Sony Xperia", 25000));

    // using arrow to filter data
    Stream<Product> filtered_data = list.stream().filter(p -> p.price > 17000);
    filtered_data.forEach(product -> System.out.println(product.name + ": " + product.price));
  }
}

Ausgabe:

Iphone 12: 100500.0
Sony Xperia: 25000.0

Pfeiloperator im Java-Thread

Dies ist eine weitere Verwendung des Lambda-Ausdrucks, bei dem wir ihn verwendet haben, um die Methode run() der ausführbaren Schnittstelle zu implementieren. Da Runnable eine einzelne Methodenschnittstelle ist, ist es einfach, einen Lambda-Ausdruck zu verwenden. Siehe das Beispiel unten.

package javaexample;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    // using arrow
    Runnable r = () -> {
      System.out.println("Thread is running...");
    };
    Thread t2 = new Thread(r);
    t2.start();
  }
}

Ausgabe:

Thread is running...

Verwandter Artikel - Java Operator