gpt4 book ai didi

Java 8 基于 list 字符串到列表 的流排序映射

转载 作者:行者123 更新时间:2023-12-01 19:34:35 25 4
gpt4 key购买 nike

我有一个 map ,其中键为字符串,值作为字符串列表

我想根据字符串列表对 map 进行排序(按字典顺序)。

如果我有一个 List<List<String>>然后我可以排序

List<List<String>> sortedlist = new LinkedList<>();
sortedlist.sort((l1, l2) -> l1.get(0).compareTo(l2.get(0)));

但是我有一个Map<String, List<String>> sortedMap,我想根据值对其进行排序,即 map 值集中每个列表的第一个元素。

我正在尝试形成一个类似这样的流 lambda 表达式。

HashMap<String, List<String> > sortedmap = new HashMap<>();
sortedmap = map.values().stream().sorted(Map.Entry.comparingByValue((l1, l2) -> l1.get(0).compareTo(l2.get(0))) )

但这不是一个有效的 lambda 表达式。

如何使用 Java 8 流执行此操作?

最佳答案

试试这个:

Map<String, List<String>> sortedMap = 
map.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.comparing(l -> l.get(0))))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v1, LinkedHashMap::new));

请注意,在收集到 HashMap 时排序没有任何意义,因为它是无序的。

关于Java 8 基于 list<String> 字符串到列表 <String> 的流排序映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58305892/

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