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
相关产品推荐
相关产品推荐

