相关疑难解决方法(0)

什么是PECS(制作人扩展消费者超级)?

我在阅读泛型时遇到了PECS(制片extends人和消费者的super简称).

能否给我一个人解释如何使用佩奇之间解决困惑extendssuper

java generics super pecs bounded-wildcard

680
推荐指数
11
解决办法
9万
查看次数

Comparator.comparing 对于 Comparator 有什么用

据我了解 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)

java collections lambda comparator

5
推荐指数
2
解决办法
2万
查看次数