2022年5月13日 星期五

android studio:lambda表達式

Lambda可以說是匿名的函數,它沒有參數,但是有參數列表、函數主體、返回類型等,透過簡化的方法,減少程式出錯的機會。Lambda只能用在函數式的介面,這個介面只能有一個需實現的抽象類方法,這樣在放入參數時,介面才知道是要使用那一個方法。

它將函數的設定方式,透過->簡化成下列形式:
(參數) -> 表達式 或 (參數) ->{ 陳述式; }
其中參數可以是空值(),可以是一個值(x),多個值(x,y,z),也可以在值的前面加上類型。

以下面為例:

List<Integer> list =Arrays.asList(7, 2 6, 3, 1); //建立一個Arrays
//執行list中排序的方法
list.sort(new aa<Integer>());{
@Override
public int a(Integer a1, Integer a2){
return a1.compareTo(a2);
}
});

上述為了在sort這個方法的參數,引入aa的方法,在裡面又new了一個aa方法。而如果透過lambda的方法,就可以簡化成:
list.sort((a1, a2) -> a1.compareTo(a2);

a1及a2是原來上面a這個函數的參數,而a1.compareTo(a2)則是原來函式的返回值。上面的lambda可解釋為丟入a1及a2這兩個變數,而將a1.compareTo(a2)比較的結果,返回給sort當作參數。
另外,有一些函數的給予值是確定的,可以有更為簡化的寫法,如利用forEach將清單的每一個列都印出來:
list.forEach((e) ->System.out.println(e));
可更簡寫成:(前為類別::後為方法)方法的參數省略了。
list.forEach(System.out::println);












沒有留言:

張貼留言