JDK1.8及以上的Lambda表示式
JDK1.8及以上的Lambda表示式(不足之處,還望大佬指正)
這是一個在java jdk1.8及以上出現的一個重量級新特性,這是一個新的程式設計思想(函數語言程式設計思想)的轉變—強調做什麼,而不是以什麼形式做.
這樣官方的解釋,我也很懵啊,舉一個小小的例子吧,在生活中相信大家都感受過春節回家的痛苦吧,往往都是一張回家票難求啊, 這個時候就不管有什麼票了,高鐵票啊,飛機票啊,汽車票啊,只要能回家,什麼票都行(這就是體現了函數語言程式設計思想,只要能達到目的,通過什麼方式不是重要的,方式只是一種手段)
這個時候就出現了帥氣的Lambda表示式.不管是在程式碼的間接度上,還是效率上,都是比之前的匿名內部類要好上不少.
lambda的標準格式:(引數型別 引數名稱) -> {程式碼語句}
格式說明:
- 小括號內的語法與傳統方法(介面的抽象方法)引數列表一致:無引數則留空;多個引數則用逗號分隔。
- ->是新引入的語法格式,代表指向動作。
- 大括號內的語法與傳統方法體(實現抽象方法的方法體)要求基本一致。
使用前提:
- 使用Lambda必須具有介面,且要求介面中有且僅有一個抽象方法。
- 使用Lambda必須具有上下文推斷。
舉一個簡單的例子吧:
這是大家所常用的多執行緒程式碼:
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("子執行緒程式碼" + i);
}
}
}).start();
}
這是Lambda對於多執行緒的寫法:
public static void main(String[] args) {
//Lambda寫法,因為run()方法無參,所以只寫小括號
new Thread(() -> {
for (int i = 0; i < 10; i++) {
System.out.println("子執行緒程式碼" + i);
}
}).start();
}
以上的兩個例子都是一樣的效果.
講講Lambda的省略格式:
- 小括號內引數的型別可以省略;
- 如果小括號內有且僅有一個參,則小括號可以省略;
- 如果大括號內有且僅有一個語句,則無論是否有返回值,都可以省略大括號、return關鍵字及語句分號(要大括號,return,分號要同時省略)。
再來一個省略的Lambda例子:
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
//給集合新增資料
Collections.addAll(list, 5, 8, 2, 9, 4);
//使用Lambda表示式書寫降序規則
Collections.sort(list, (o1, o2) -> o2 - o1);
System.out.println(list);//[9, 8, 5, 4, 2]
}
確實是比匿名內部類好用的多,程式碼簡潔,有逼格!
相關文章
- JDK1.8之lambda表示式JDK
- JDK1.8 之Lambda表示式JDK
- JDK1.8 Lambda 表示式的學習JDK
- JDK1.8新特性--Lambda表示式JDK
- jdk1.8新特性:Lambda表示式JDK
- jdk1.8 lambda表示式入門JDK
- JDK1.8的新特性之Lambda表示式JDK
- JDK1.8中Lambda表示式的應用JDK
- JDK1.8新特性之Lambda表示式JDK
- JDK1.8新特性之Lambda表示式()->JDK
- jdk1.8 新特性之 lambda表示式JDK
- JDK1.8之Lambda解析與表示式的使用JDK
- JDK1.8最新特性--Lambda表示式(重點)JDK
- C# Lambda表示式詳解,及Lambda表示式樹的建立C#
- jdk1.8 新特性之 如何寫lambda表示式JDK
- [轉]Java 8 的 lambda 表示式 Java 8 的 lambda 表示式Java
- JDK1.8新特性:Lambda表示式語法和內建函式式介面JDK函式
- lambda 表示式
- lambda表示式
- Python Lambda表示式的作用及定義Python
- Java的Lambda表示式Java
- cpp的lambda表示式
- Java | Lambda表示式Java
- Lambda表示式(Java)Java
- java lambda 表示式Java
- 八,Lambda表示式
- Java Lambda表示式Java
- [Java學習筆記]JDK1.8新特性學習(一)Lambda表示式Java筆記JDK
- Lambda 表示式的應用
- Java 中的 Lambda 表示式Java
- C#中的Lambda表示式和表示式樹C#
- 淺談lambda表示式
- Lambda表示式詳解
- Java之lambda表示式Java
- kotlin lambda表示式Kotlin
- Python - lambda 表示式Python
- Lambda表示式總結
- Java 8 Lambda 表示式Java