天天看點

簡單的Lambda表達式(适用JAVA初學者2)

用于運作線程的Lambda表達式

您可以使用lambda表達式來運作線程。在以下示例中,我們通過使用lambda表達式實作run方法。

public class ThreadExample{
  public static void main(String[] args) {
        //Thread Example without lambda  
        Runnable r1=new Runnable(){  
            public void run(){  
                System.out.println("Thread1 is running...");  
            }  
        };  
        Thread t1=new Thread(r1);  
        t1.start();  
        //Thread Example with lambda  
        Runnable r2=()->{  
                System.out.println("Thread2 is running...");  
        };  
        Thread t2=new Thread(r2);  
        t2.start();  
  }
}      

輸出量

Thread1 is running...
Thread2 is running...      

Lambda表達式以比較和過濾集合清單

class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        super();  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  

public class FilterListExample{
  public static void main(String[] args) {
        List<Product> list=new ArrayList<Product>();  
        list.add(new Product(1,"Volvo",19000f));  
        list.add(new Product(3,"Tesla",75000f));  
        list.add(new Product(2,"Toyota",38000f)); 

        // using lambda to filter data  
        Stream<Product> filtered_data = list.stream().filter(p -> 
        p.price > 3000);  

        // using lambda to iterate through collection  
        filtered_data.forEach(  
                product -> System.out.println(product.name+": 
        "+product.price)   
       );
  }
}

      
Tesla: 75000.0
Toyota: 38000.0      

使用Lambda表達式時要注意的幾點

Lambda表達式的主體可以包含零個,一個或多個語句。

如果隻有一條語句,則不必使用大括号,并且匿名函數的傳回類型與主體表達式的傳回類型相同。

如果有多個語句,則必須将它們括在大括号(一個代碼塊)中,并且匿名函數的傳回類型與該代碼塊内傳回的值的類型相同;如果不傳回任何值,則傳回void

為什麼使用Lambda表達式

這是使用Lambda表達式的一些好處。

1.更少的代碼行:

使用lambda表達式的好處之一是減少了代碼量。

2.通過在方法中傳遞行為來支援順序和并行執行:

随着Java 8中Stream API的引入,可以将函數傳遞給收集方法,現在由收集負責以順序或并行方式處理元素。

3.更高的效率(利用多核CPU):

如果對集合進行批量操作,則使用Stream API和lambda表達式可以實作更高的效率(并行執行)。同樣,lambda表達式可以幫助實作集合的内部疊代,而不是如上例所示的外部疊代。如今,我們擁有帶多核的CPU,是以可以通過使用lambda并行處理集合來利用這些多核CPU。

總之,歡迎使用Lambda表達式添加到任何代碼庫中,本文旨在展示如何使用和應用它們的指針。