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

如何用Lambda与Stream将Group列表转为Entity键映射Group值的单行代码

用Stream改写后的单行实现

如果要保持和原代码完全一致的行为(重复Entity key时,后出现的会覆盖之前的),可以这么写:

Map<String, String> entityGroup = groups.stream()
    .flatMap(group -> group.getEntities().stream().map(entity -> new AbstractMap.SimpleEntry<>(entity.getKey(), group.getKey())))
    .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (existing, replacement) -> replacement));

代码说明

  • 先把groups转为Stream,通过stream()方法开启流式操作
  • 用flatMap将每个Group下的Entity列表“展开”成单个Entity的流,同时把每个Entity的key和所属Group的key包装成SimpleEntry键值对
  • 最后通过Collectors.toMap收集成目标Map:
    • 第一个参数指定用Entry的key作为Map的键(也就是Entity的key)
    • 第二个参数指定用Entry的value作为Map的值(也就是Group的key)
    • 第三个参数是重复键的处理逻辑,(existing, replacement) -> replacement表示新值覆盖旧值,和原代码中put方法的行为完全一致

如果确定不会出现重复的Entity key,也可以省略第三个参数,简化成:

Map<String, String> entityGroup = groups.stream()
    .flatMap(g -> g.getEntities().stream().map(e -> new AbstractMap.SimpleEntry<>(e.getKey(), g.getKey())))
    .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:50:31