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

Java如何基于指定keys映射将现有List<Map>转换为目标List<Map>

实现方案

你需要的核心逻辑是遍历keys的所有value值,将每个value作为新建mergedMap的key,从当前遍历到的eachMap中取出对应值后存入即可。

先修正你示例代码中的几处笔误:

  • map1赋值时的m1.put应为map1.put
  • 多处拼写错误的HasMap应为HashMap
  • 循环变量listOfMaps应为你提前定义的list

基础写法(适合初学者理解)

补全后的循环代码如下:

List<Map<String, String>> resultList= new ArrayList<>();
for(Map<String, String> eachMap: list){
     Map<String, String> mergedMap = new HashMap<>();
     // 遍历keys的所有value,作为目标key取对应值
     for (String targetKey : keys.values()) {
         // 若担心key不存在返回空,可替换为eachMap.getOrDefault(targetKey, "")设置默认值
         mergedMap.put(targetKey, eachMap.get(targetKey));
     }
     resultList.add(mergedMap);
}

简化写法(Java8及以上版本支持)

如果熟悉流式API,可以用更简洁的写法实现:

import java.util.stream.Collectors;

List<Map<String, String>> resultList = list.stream()
    .map(eachMap -> {
        Map<String, String> mergedMap = new HashMap<>();
        keys.values().forEach(k -> mergedMap.put(k, eachMap.get(k)));
        return mergedMap;
    })
    // JDK16及以上可直接替换为.toList()
    .collect(Collectors.toList());

运行后遍历resultList打印,即可得到你需要的输出结果:

{Cow=Legs, Eagle=Wings}
{Cow=Grass, Eagle=Flesh}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:54:01