更新時間:2022-04-19 08:45:05 來源:動力節點 瀏覽927次
Lambda 表達式是在 Java 8 新特性中添加的。
lambda 表達式是一小段代碼,它接受參數并返回一個值。Lambda 表達式類似于方法,但它們不需要名稱,并且可以直接在方法體中實現。
最簡單的 lambda 表達式包含一個參數和一個表達式:
parameter -> expression
要使用多個參數,請將它們括在括號中:
(parameter1, parameter2) -> expression
表達方式有限。它們必須立即返回一個值,并且它們不能包含變量、賦值或語句,例如ifor for。為了進行更復雜的操作,可以使用帶有花括號的代碼塊。如果 lambda 表達式需要返回一個值,那么代碼塊應該有一個return語句。
(parameter1, parameter2) -> { code block }
Lambda 表達式通常作為參數傳遞給函數:
例子:
ArrayList在's方法中使用 lamba 表達式forEach()來打印列表中的每個項目:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
numbers.forEach( (n) -> { System.out.println(n); } );
}
}
如果變量的類型是只有一個方法的接口,則 Lambda 表達式可以存儲在變量中。lambda 表達式應具有與該方法相同數量的參數和相同的返回類型。Java 內置了許多此類接口,例如列表使用的Consumer接口(在java.util包中找到)。
例子:
使用 Java 的Consumer接口將 lambda 表達式存儲在變量中:
import java.util.ArrayList;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
Consumer<Integer> method = (n) -> { System.out.println(n); };
numbers.forEach( method );
}
}
要在方法中使用 lambda 表達式,該方法應該有一個參數,其類型為單方法接口。調用接口的方法將運行 lambda 表達式:
例子:
創建一個將 lambda 表達式作為參數的方法:
interface StringFunction {
String run(String str);
} } } }
public class Main {
public static void main(String[] args) {
StringFunction exclaim = (s) -> s + "!";
StringFunction ask = (s) -> s + "?";
printFormatted("Hello", exclaim);
printFormatted("Hello", ask);
public static void printFormatted(String str, StringFunction format) {
String result = format.run(str);
System.out.println(result);
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習