【问题标题】:How to convert List<Map<String,String>> to Map<String,String> using java-8 lambda and stream [duplicate]如何使用 java-8 lambda 和流将 List<Map<String,String>> 转换为 Map<String,String> [重复]
【发布时间】:2019-05-22 19:49:12
【问题描述】:

我有以下地图列表。

Map<String,String> map1 = new HashMap<>(); map1.put("DAY1","40T"); map1.put("DAY2","60T");
Map<String,String> map2 = new HashMap<>(); map2.put("DAY5","70T"); map2.put("DAY6","90T");
Map<String,String>[] mapArr= new Map[] {map1,map2};
List<Map<String,String>> lstOfMaps =  Arrays.asList(mapArr);

如何使用java8将上面的lstOfMaps转换为Map&lt;String,String&gt;。 其中键是 DAY1、DAY2、DAY5、DAY6,值是 40T、60T、70T、90T

我尝试了多种方法,但使用for 循环很长。现在尝试使用 lambda 和流。

【问题讨论】:

标签: java lambda java-8 functional-programming java-stream


【解决方案1】:

最简单的解决方案是获取列表中每个地图的入口流,将它们扁平化为一个流,然后将其收集回地图中:

return lstOfMaps.stream().flatMap(map ->
    map.entrySet().stream()
).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多