我有以下代码可以正常工作:
Map<String, List<String>> map = Arrays.stream(input)
.collect(groupingBy(s -> s.split("\\s+")[0],
TreeMap::new, toList()));
但是我需要TreeMap以降序排序。我试过了:
Map<String, List<String>> map = Arrays.stream(input)
.collect(groupingBy(s -> s.split("\\s+")[0],
new TreeMap<>((a, b) -> b.compareTo(a)), toList()));
但是我收到错误“找不到与对象比较的符号”。
如何使TreeMap接受比较器?有可能吗?
最佳答案
它需要一个Supplier<Map>
,您可以使用如下的lambda进行制作:
() -> new TreeMap<>((a, b) -> b.compareTo(a))
同样,由于您只想颠倒顺序,因此可以使用
Comparator
类中提供的方法:() -> new TreeMap<>(Comparator.reverseOrder())
关于java - 如何为MapFactory指定比较器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25518210/