如何使用 Java Streams 将地图列表转换为列表地图

bub*_*h p 0 java java-stream

ListMapS作为

[{"a"="10","b"="20"},{"a"="12","b"="22"},{"a"="14","b"="24"}]
Run Code Online (Sandbox Code Playgroud)

我想Map作为

{"a"=["10","12","14"],"b"=["20","22","24"]}
Run Code Online (Sandbox Code Playgroud)

Ale*_*x R 7

您无需实例化其他数据结构即可执行此操作。你首先映射Maps到Map.Entry,然后按键分组。

var listOfMaps = List.of(
        Map.of("a", 10, "b", 20),
        Map.of("a", 12, "b", 22),
        Map.of("a", 14, "b", 24)
);

var mapOfLists = listOfMaps.stream()
        .map(Map::entrySet)
        .flatMap(Set::stream)
        .collect(Collectors.groupingBy(
                Map.Entry::getKey,
                Collectors.mapping(
                        Map.Entry::getValue,
                        Collectors.toList()
                )
        ));

System.out.println(mapOfLists);
Run Code Online (Sandbox Code Playgroud)

输出: {a=[10, 12, 14], b=[20, 22, 24]}