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

如何使用Stream API将嵌套Map指定内层key的List<Integer>合并为单个列表

完整可运行示例

import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;

public class NestedMapProcess {
    public static void main(String[] args) {
        // 构造示例数据
        Map<String, Map<String, List<Integer>>> nestedMap = Map.of(
                "KeyA", Map.of("keya", List.of(1, 2, 3)),
                "KeyB", Map.of("keya", List.of(4, 5, 6)),
                "KeyC", Map.of("keyb", List.of(7, 8))
        );
        String targetInnerKey = "keya";

        List<Integer> result = processNestedMap(nestedMap, targetInnerKey);
        System.out.println(result); // 输出:[1, 2, 3, 4, 5, 6]
    }

    private static List<Integer> processNestedMap(Map<String, Map<String, List<Integer>>> nestedMap, String targetInnerKey) {
        return nestedMap.values().stream()
                .filter(innerMap -> innerMap.containsKey(targetInnerKey))
                .map(innerMap -> innerMap.get(targetInnerKey))
                .filter(Objects::nonNull) // 兼容内层key对应value为null的场景,不需要可以删除
                .flatMap(List::stream)
                .collect(Collectors.toList());
    }
}

关键步骤说明

  1. 调用外层Map的values()方法,直接忽略不需要保留的外层key,只处理第二层嵌套的Map集合
  2. 通过filter筛选出所有包含目标内层key的第二层Map
  3. 用map取出第二层Map中目标key对应的List<Integer>
  4. flatMap将多个List的元素平铺为单个Integer类型的流,实现列表合并
  5. 最后用collect将流收集为新的List<Integer>

内容的提问来源于stack exchange,提问作者Jawad El Fou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:36:00