首页 > 解决方案 > Kotlin - 从 Map 列表,到按 key 分组的地图

问题描述

我有一个List<Map<Branch,Pair<String, Any>>>我想转换成一个Map<Branch,List<Pair<String, Any>>>.

因此,如果我有一个只有 2 个元素的初始列表:

列表

1. branch1 -> Pair(key1,value1)

   branch2 -> Pair(key2,value2)


2. branch1 -> Pair(key1a,value1a)

我想结束:

地图

branch1 -> Pair(key1,value1)

           Pair(key1a,value1a)

branch2 -> Pair(key2,value2)

所以一种 gr​​oupBy,使用最初嵌套映射中键的所有值..

我试过了

list.groupBy{it-> it.keys.first()} 

但显然它不起作用,因为它只使用第一个键。我想要相同的,但使用所有键作为单独的值。

在 Kotlin 中这样做最惯用的方式是什么?我有一个丑陋的 Java 工作版本,但我很确定 Kotlin 有一个很好的方法。只是到目前为止我还没有找到它!

任何想法 ?

谢谢

标签: kotlin

解决方案


以下:

val result =
    listOfMaps.asSequence()
        .flatMap {
          it.asSequence()
        }.groupBy({ it.key }, { it.value })

将为您提供包含您请求的内容result的类型。Map<Branch,List<Pair<String, Any>>>


推荐阅读