You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用Stream按值倒序排序Map并保留前3个最高值问题

问题:从TreeMap中筛选值最高的前3个条目

我有一个如下的TreeMap:

{AMZ=12.733334, APL=10.133334, FBK=21.4, GGL=30.599998, GHB=4.6, MCS=11.433334}

我希望只保留其中值最高的前3个条目,于是尝试了以下代码:

TreeMap<String, Float> ThreeBestStocksMean = new TreeMap<>();
ThreeBestStocksMean = stocksMean.entrySet()
       .stream()
       .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
       .limit(3)
       .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (key1, key2) -> key1, TreeMap::new));
System.out.println(ThreeBestStocksMean.toString());

但得到的结果却和预期完全相反,返回的是3个最低值:

{APL=10.133334, GHB=4.6, MCS=11.433334}

我怀疑是不是错误使用了Comparator.reverseOrder()?实际上不管加不加这个方法,结果都一样,我也尝试过Map.Entry.<String, Float>comparingByValue().reversed(),结果还是相同。

编辑:后续排查发现,这段代码本身是有效的,问题出在我代码中残留的其他无关内容上。


内容的提问来源于stack exchange,提问作者Nicryc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:43:08