我有一个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)
Run Code Online (Sandbox Code Playgroud)
我想结束:
地图
branch1 -> Pair(key1,value1)
Pair(key1a,value1a)
branch2 -> Pair(key2,value2)
Run Code Online (Sandbox Code Playgroud)
所以一种 groupBy,使用初始嵌套映射中键的所有值..
我试过
list.groupBy{it-> it.keys.first()}
Run Code Online (Sandbox Code Playgroud)
但显然它不起作用,因为它只使用第一个键。我想要相同的,但使用所有键作为单独的值。
在 Kotlin 中这样做最惯用的方法是什么?我有一个丑陋的 Java 工作版本,但我很确定 Kotlin 有一个很好的方法。只是到目前为止我还没有找到它!
任何的想法 ?
谢谢
Rol*_*and 10
下列:
val result =
listOfMaps.asSequence()
.flatMap {
it.asSequence()
}.groupBy({ it.key }, { it.value })
Run Code Online (Sandbox Code Playgroud)
将为您提供包含您请求的内容result的类型Map<Branch,List<Pair<String, Any>>>。
小智 8
val list: List<Map<Branch, Pair<String, Any>>> = listOf()
val map = list
.flatMap { it.entries }
.groupBy { it.key }
.mapValues { entry -> entry.value.map { it.value } }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14974 次 |
| 最近记录: |