gpt4 book ai didi

Java 8 - 将 列表到单个映射中

转载 作者:行者123 更新时间:2023-12-01 17:41:09 26 4
gpt4 key购买 nike

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

列表大小可以是 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}

最佳答案

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

mapList.stream()
.flatMap(m -> m.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

请注意,不会处理重复的键。要忽略重复项,您可以使用:

Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v1)

关于Java 8 - 将 <Map> 列表到单个映射中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61070979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com