Java函数式编程教程(二):Java高阶函数(排序集合,反向排序)

翻译:GentlemanTsao,2020-06-24

文章目录


高阶函数是将函数(方法)作为参数,或者在执行后返回函数的函数。 在这个高阶教程中,我将展示一些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);   

Collection.sort()有两个参数。 第一个参数是List,第二个参数是lambda(函数)。 lambda参数使Collections.sort()成为高阶函数。

反向排序

下面是高阶函数的另一个示例。 这次是一个函数,它返回另一个函数作为结果。 下面是Java高阶函数示例:

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

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

Collections.sort(list, comparatorReversed);

System.out.println(list);

本示例首先创建一个Java lambda表达式,该表达式实现Comparator接口。

其次,该示例在Comparator lambda上调用了reversed()方法。 reversed()方法将返回一个新的Comparator lambda,该lambda将反转第一个Comparator实现所返回的结果。 “反转”是指它返回的是 -1 *comparator.compare(a,b)。

因为reversed()方法返回一个lambda(函数),所以reversed()方法被认为是高阶函数。

第三,该示例使用Collections.sort()方法对字符串列表进行排序。

下一篇:
Java函数式编程教程(三):Java函数式接口

猜你喜欢

转载自blog.csdn.net/GentelmanTsao/article/details/106918050