Java 中的箭頭運算子 ->

Mohammad Irfan 2023年1月30日 2021年10月2日
  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