据我所知,Comparator是一个函数接口,用于比较2个对象和int compare(T o1, T o2)
,作为接受两个参数的抽象函数.
List<String> projects=Arrays.asList("abc","def","sss","aaa","bbb");
projects.stream().sorted((x,y)->y.compareTo(x)).forEach(s->System.out.println(s));
projects.stream().sorted(Comparator.comparing(s->s)).forEach(s->System.out.println(s));
排序方法将比较器作为参数.所以我能够理解第一个lambda表达式,但我想知道Comparator.comparing(s->s)
的用法,也就是说,Comparator.comparing()
是用来将单参数lambda表达式转换为双参数lambda表达式的,还是它还有其他用途.
public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
Function<? super T, ? extends U> keyExtractor)