Java 中的箭頭運算子 ->

Mohammad Irfan 2023年10月12日
  1. Java 中箭頭運算子的使用
  2. Java 集合中的箭頭運算子
  3. Java 執行緒中的箭頭運算子
Java 中的箭頭運算子 ->

本教程介紹了箭頭運算子 (->) 在 Java 中的作用,並列出了一些示例程式碼來理解該主題。

在 Java 8 中,增加了一個新特性 lambda 表示式,同時在 Java 中出現了箭頭運算子,用於形成 lambda 表示式。它將引數與表示式主體分開。

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

Lambda 表示式是在 Java 8 中引入的,可以用來代替 Java 中的匿名類,使程式碼更加簡潔和可讀。

下面是我們如何在 Java 8 之前的 Java 中建立匿名類的示例。

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

這就是我們如何在 Java 8 中使用 lambda 表示式來實現上述任務。

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

讓我們從一些示例開始,以瞭解 lambda 和箭頭運算子的使用。

Java 中箭頭運算子的使用

在此示例中,我們使用箭頭運算子建立了一個 lambda 表示式,該表示式實現了 Drawable 介面的 draw() 方法。請參考下面的示例。

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

輸出:

Drawing width:  20

由於 lambda 表示式是使用函式式方法建立簡潔程式碼的一種超級方式,因此我們可以在 Java 程式碼中以多種方式使用它。讓我們看一些我們可以應用它的例子。

Java 集合中的箭頭運算子

在此示例中,我們使用 lambda 表示式過濾 ArrayList 資料。我們使用了流 API 和 filter() 方法來獲得所需的結果。你會注意到,使用 lambda 建立程式碼比使用非 lambda 程式碼更容易。請參考下面的示例。

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

輸出:

Iphone 12: 100500.0
Sony Xperia: 25000.0

Java 執行緒中的箭頭運算子

這是 lambda 表示式的另一種用法,我們用它來實現可執行介面的 run() 方法。由於 Runnable 是單個方法介面,因此很容易使用 lambda 表示式。請參考下面的示例。

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

輸出:

Thread is running...

相關文章 - Java Operator