我在阅读泛型时遇到了PECS(制片extends人和消费者的super简称).
能否给我一个人解释如何使用佩奇之间解决困惑extends和super?
据我了解 Comparator 是一个函数接口,用于比较 2 个对象,int compare(T o1, T o2)作为带有两个参数的抽象函数。但还有一种函数Comparator.comparing(s->s)可以采用只有一个输入参数的 lambda 函数。例如使用流对集合进行排序
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));
Run Code Online (Sandbox Code Playgroud)
Sorted 方法采用 Comparator 作为参数。所以我能够理解第一个 lambda 表达式,但我想知道Comparator.comparing(s->s)ie 的使用是Comparator.comparing()用于将单参数 lambda 表达式转换为双参数表达式,还是还有其他用途。另请解释以下函数声明的部分。
public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
Function<? super T, ? extends U> keyExtractor)
Run Code Online (Sandbox Code Playgroud)