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

如何使用Java Stream将HashMap转为拼接键值的List<String>

问题1:将循环代码转换为Java Stream实现

原循环逻辑是遍历HashMap的所有条目,将键与计算后的百分比(保留三位小数)格式化后存入列表。用Stream实现的代码如下:

int size = ...;
var a = myHashMap.entrySet()
    .stream()
    .map(entry -> String.format("%s %.3f", entry.getKey(), 100.0 * entry.getValue() / size))
    .toList();

说明:

  • 通过entrySet().stream()获取Map条目的流
  • map操作将每个Map.Entry转换为格式化后的字符串,逻辑和原循环完全一致
  • 最后用toList()收集结果(Java 16+支持,低版本可替换为collect(Collectors.toList()))

问题2:修改现有Stream代码,同时获取key和value并格式化

原代码仅提取排序后的value,要同时获取key和value并格式化,只需修改map操作,同时使用entry.getKey()和entry.getValue()完成格式化:

int size = ...;
var a = myHashMap.entrySet()
    .stream()
    .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
    .map(entry -> String.format("%s %.3f", entry.getKey(), 100.0 * entry.getValue() / size))
    .toList();

说明:

  • 保留原有的排序逻辑(按value倒序)
  • 将map(Map.Entry::getValue)替换为自定义map操作,完成键值对的格式化组合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:21:00