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

如何按Account键值拆分String类型Map列表并转为嵌套列表?

按Account分组List<Map<String,String>>的简便实现方法

最简便的实现方式是利用Java 8及以上版本的Stream API配合Collectors.groupingBy,几行代码就能完成分组:

List<List<Map<String, String>>> groupedList = new ArrayList<>(
    dataListMap.stream()
        .collect(Collectors.groupingBy(map -> map.get("Account")))
        .values()
);

代码说明

  • stream():将原始列表转为流,支持链式操作
  • Collectors.groupingBy(map -> map.get("Account")):以每个Map中"Account"对应的字符串作为分组键,自动将相同Account的Map归集到同一组,返回一个Map<String, List<Map<String, String>>>(键是Account值,值是对应分组的Map列表)
  • values():取出分组后的所有子列表集合,转成ArrayList就得到你需要的List<List<Map<String,String>>>结构

保持分组顺序(可选)

如果需要保留Account首次出现的顺序(比如先220组,再230组),可以指定用LinkedHashMap维护插入顺序:

List<List<Map<String, String>>> groupedList = new ArrayList<>(
    dataListMap.stream()
        .collect(Collectors.groupingBy(
            map -> map.get("Account"),
            LinkedHashMap::new,
            Collectors.toList()
        ))
        .values()
);

低版本Java的替代方案(Java 8之前)

如果无法使用Stream API,也可以手动遍历分组:

Map<String, List<Map<String, String>>> groupMap = new HashMap<>();
for (Map<String, String> map : dataListMap) {
    String account = map.get("Account");
    groupMap.computeIfAbsent(account, k -> new ArrayList<>()).add(map);
}
List<List<Map<String, String>>> groupedList = new ArrayList<>(groupMap.values());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:45:30