gpt4 book ai didi

java Stream倒序收集到TreeMap

转载 作者:行者123 更新时间:2023-12-02 16:50:22 24 4
gpt4 key购买 nike

我有以下代码从流中收集 map ,并将其转换为树形图

Map<String, String> result = myMap.values().stream().collect(Collectors.toMap(Person::getScore, Person::getName));
return new TreeMap<>(result);

有没有办法在同一行中返回降序排序的 treeMap?我不能将比较器作为参数传递。

最佳答案

我想你可以使用四个参数 toMap返回收集器的方法。假设 getScore 方法返回一个 Integer(或者您可以继续使用 String,但我认为它不太可用):

//supplier of TreeMap with your custom comparator
Supplier<TreeMap<Integer, String>> myMapSupplier = () -> new TreeMap<>(Comparator.reverseOrder());

Map<Integer, String> result = myMap.values()
.stream()
.collect(Collectors.toMap(Person::getScore, Person::getName, (s, s2) -> s, myMapSupplier));

最后一个元素是Map 的供应商。作为documentation状态:

mapSupplier - a function which returns a new, empty Map into which the results will be inserted

因此您仍然可以在一次调用中拥有一个带有自定义 ComparatorTreeMap

关于java Stream倒序收集到TreeMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58998826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com