高阶函数(Higher Order Function)是指接收一个函数作为参数,或者在执行后返回一个函数的函数。在本教程中,我将展示几个 Java 中高阶函数的示例。
集合排序
第一个高阶函数的例子是 Collections.sort() 方法,它接受一个 Comparator 作为参数。以下是示例代码:
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 接口的 Java lambda 表达式。
接着,调用了该 Comparator lambda 的 reversed() 方法。reversed() 方法会返回一个新的 Comparator lambda,其比较结果与原始 Comparator 相反(即返回 -1 * comparator.compare(a, b))。
由于 reversed() 方法返回的是一个 lambda(函数),因此它本身也被视为一个高阶函数。
最后,使用 Collections.sort() 方法对字符串列表进行排序。