一个高阶函数是指 一个函数使用函数作为参数或者执行完返回函数。在高阶函数教程中我将列举几个 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