Java 高階函數(shù)

一個(gè)高階函數(shù)是指 一個(gè)函數(shù)使用函數(shù)作為參數(shù)或者執(zhí)行完返回函數(shù)。在高階函數(shù)教程中我將列舉幾個(gè) Java 高階函數(shù)的例子。

集合排序

高階函數(shù)的第一個(gè)例子是使用 Comparator 作為參數(shù)的 Collections.sort() 方法,例子如下:

List<String> list = new ArrayList<>();
list.add("One");
list.add("Abc");
list.add("BCD");

Collections.sort(list, (String a, String b) -> {
    return a.compareTo(b);
});

System.out.println(list);  

Collections.sort() 方法有兩個(gè)參數(shù),第一個(gè)參數(shù)是一個(gè) list,第二個(gè)參數(shù)是一個(gè) lambda (函數(shù)),就是 這個(gè) lambda 參數(shù)使得 Collections.sort() 成為一個(gè)高階函數(shù)。

倒序排序

下面是另一個(gè)高階函數(shù)的例子,這次這個(gè)函數(shù)是返回另外一個(gè)函數(shù)作為結(jié)果:

Comparator<String> comparator = (String a, String b) -> {
    return a.compareTo(b);
};

Comparator<String> comparatorReversed = comparator.reversed();

Collections.sort(list, comparatorReversed);

System.out.println(list);

這個(gè)例子首先創(chuàng)建了一個(gè)實(shí)現(xiàn) Comparator 接口的 lambda 表達(dá)式。

其次,這個(gè)例子調(diào)用了 reversed() 方法返回一個(gè)新的 Comparator lambda,它可以反轉(zhuǎn)第一個(gè) Comparator 接口實(shí)現(xiàn)產(chǎn)生的結(jié)果。這里的 “反轉(zhuǎn)” 是指它簡(jiǎn)單的返回 -1 * comparator.compare(a,b)
因?yàn)?reversed() 返回一個(gè) lambda (函數(shù)),所以它可以被認(rèn)為是一個(gè) 高階函數(shù)。

第三,這個(gè)例子使用了 Collections.sort() 方法對(duì)一個(gè)字符串 list 進(jìn)行排序。
議自:https://jenkov.com/tutorials/java-functional-programming/higher-order-functions.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容