You need to enable JavaScript to run this app. 如何使用Java Stream为Map中的empid追加<emp>XML标签
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java Stream为Map中的empid追加<emp>XML标签

问题原因

  • 核心错误:你在map操作中复用了同一个可变StringBuilder实例b。StringBuilder.append()会返回当前实例本身,流遍历过程中会持续往同一个b追加内容,收集阶段相当于把每次累积后的b的内容重复拼接,最终就会出现ID反复重复的异常结果。
  • 语法错误:拼接闭合标签时漏写了>,生成的</emp属于非法标签格式。
  • 冗余操作:Collectors.joining()本身已经封装了字符串拼接逻辑,不需要额外定义StringBuilder做中间处理。

修复代码

直接在map阶段返回拼接完成的单个标签字符串即可,不需要额外引入外部StringBuilder:

// 仅需获取员工ID可直接遍历keySet,无需遍历entrySet
String l = map1.keySet().stream()
        .map(empId -> "<emp>" + empId + "</emp>")
        .collect(Collectors.joining());

如果需要每个标签单独换行,可给joining方法传入换行符参数:

String l = map1.keySet().stream()
        .map(empId -> "<emp>" + empId + "</emp>")
        .collect(Collectors.joining("\n"));

运行结果

修复后输出符合预期:

<emp>1234</emp><emp>456</emp><emp>789</emp><emp>876</emp>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:45:04