Java 高阶函数

更新于 2025-12-29

高阶函数(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() 方法对字符串列表进行排序。