1.標準語法
考慮以下示例:
String[] arr = {"program", "creek", "is", "a", "java", "site"};
Arrays.sort(arr, (String m, String n) -> Integer.compare(m.length(), n.length()));
System.out.println(Arrays.toString(arr));
lambda表達式的標準語法包括以下內容:
1. 用括號括起來的形式參數的逗號分隔列表。在這種情況下(String m, String n)
2. 箭頭標記 ->
3. 主體,由單個表達式或語句塊組成。在這種情況下,它是一個單一表達式-Integer.compare(m.length(), n.length())
Output:
[a, is, java, site, creek, program]
2.可以推斷參數類型
如果可以從上下文中推斷出參數的參數類型,則可以省略該類型。
在上面的代碼中,可以將m和n的類型推斷為String,因此可以省略該類型。這使代碼更整潔,更像真正的lambda表達式。
3. Lambda表達式中的多行代碼
如果代碼不能一行編寫,則可以將其括在{}中。現在,該代碼應明確包含return語句。
String[] arr = { "program", "creek", "is", "a", "java", "site" };Arrays.sort(arr, (String m, String n) -> {
if(m.length() > n.length())
return-1;
else
return0;});System.out.println(Arrays.toString(arr));
[program, creek, java, site, is, a]
4.推斷類型的單參數
當可以推斷類型時,對於單參數lambda表達式可以省略括號。
String[] arr = { "program", "creek", "is", "a", "java", "site" };
Stream<String> stream = Stream.of(arr);
stream.forEach(x -> System.out.println(x));
a
is
java
site
creek
program
5.方法參考
通過使用方法引用,前面的代碼也可以編寫如下:
stream.forEach(System.out::println);
6.無參數
當沒有參數用於函數時,我們也可以編寫lambda表達式。例如,它看起來可能如下所示:
最後,開發這麼多年我也總結了一套學習Java的資料與面試題,如果你在技術上面想提升自己的話,可以關注我,私信發送領取資料或者在評論區留下自己的聯繫方式,有時間記得幫我點下轉發讓跟多的人看到哦。