Java 高阶函数

一个高阶函数是指 一个函数使用函数作为参数或者执行完返回函数。在高阶函数教程中我将列举几个 Java 高阶函数的例子。

集合排序

高阶函数的第一个例子是使用 Comparator 作为参数的 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() 方法有两个参数,第一个参数是一个 list,第二个参数是一个 lambda (函数),就是 这个 lambda 参数使得 Collections.sort() 成为一个高阶函数。

倒序排序

下面是另一个高阶函数的例子,这次这个函数是返回另外一个函数作为结果:

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

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

Collections.sort(list, comparatorReversed);

System.out.println(list);

这个例子首先创建了一个实现 Comparator 接口的 lambda 表达式。

其次,这个例子调用了 reversed() 方法返回一个新的 Comparator lambda,它可以反转第一个 Comparator 接口实现产生的结果。这里的 “反转” 是指它简单的返回 -1 * comparator.compare(a,b)
因为 reversed() 返回一个 lambda (函数),所以它可以被认为是一个 高阶函数。

第三,这个例子使用了 Collections.sort() 方法对一个字符串 list 进行排序。
议自:https://jenkov.com/tutorials/java-functional-programming/higher-order-functions.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容