用于運作線程的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表達式添加到任何代碼庫中,本文旨在展示如何使用和應用它們的指針。