java8 map用lambda排序不好使(steam流)

本文介绍了一种使用Java 8 Stream API对HashMap按键值排序的有效方法。通过使用toMap方法结合LinkedHashMap来保持排序结果,实现了键值的稳定排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想把hashmap根据key值排序,试了好半天都不好使,不好使的语句如下:

tempMap.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> map.put(x.getKey(), x.getValue()));
tempMap.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByKey())).forEach(System.out::println);

出去取了个外卖,回来找到个文章:

您正在使用的收集器将元素放在一个HashMap,因此排序在这里没有帮助,因为您最终将它们放在一个无序的集合中.

使用重载toMap方法,并提供一个LinkedHashMap具体的实例,即:
Map<String, Map<String, Object>> sortedMap = tempMap.entrySet().stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a, LinkedHashMap::new));
        

用他的方法真的好使,感谢!

原文链接:使用Java 8 Stream对HashMap字符串值进行排序不起作用 |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值