Java 8-List 进入单个地图

问题描述 投票:0回答:2

我有一个List<Map<String, String>>。我想将其转换为单个地图。

列表大小可以为1..n。不确定如何使用Java 8 Stream做到这一点?

List<Map<String, String>> mapList = new ArrayList<>();

Map<String, String> map1 = new HashMap<>();
map1.put("1", "One");
map1.put("2", "Two");

Map<String, String> map2 = new HashMap<>();
map2.put("3", "Three");
map2.put("4", "Four");

mapList.add(map1);
mapList.add(map2);

Map<String, String> finalMap = new HashMap<>();

我们可以在Java 7中执行以下操作:

for(Map<String, String> map : mapList) {            
    for(String key : map.keySet()) {                
        finalMap.put(key, map.get(key));
    }           
}

System.out.println("Final Map " + finalMap); // Final Map {1=One, 2=Two, 3=Three, 4=Four}
java lambda java-8 stream java-stream
2个回答
3
投票

您可以flatMap,然后使用Collectors.toMap


0
投票

这里是一种方法。我选择一种通过将重复项放在字符串列表中来处理重复项的方法。我在另一个地图中添加了每个地图的副本以进行演示。

© www.soinside.com 2019 - 2024. All rights reserved.