我认为基本上只是类型推断失败了-因为
reverse()调用妨碍了预期的参数类型
sorted()和lambda表达式。
如果将类型指定为
comparingInt显式,则可以执行以下操作:
list.stream() .sorted(Comparator.<Pair<String, Integer>>comparingInt(p -> p.v).reversed()) .map(p -> p.k) .forEach(System.out::println);
或者,如果您只是先声明比较器:
Comparator<Pair<String, Integer>> forward = Comparator.comparingInt(p -> p.v);list.stream() .sorted(forward.reversed()) .map(p -> p.k) .forEach(System.out::println);
在我看来,应该有一个
Stream.reverseSorted让这样的事情真的很容易的事情,但是看起来并不存在:(



