kotlin - 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)
所以一种 groupBy,使用最初嵌套映射中键的所有值..
我试过了
list.groupBy{it-> it.keys.first()}
但显然它不起作用,因为它只使用第一个键。我想要相同的,但使用所有键作为单独的值。
在 Kotlin 中这样做最惯用的方式是什么?我有一个丑陋的 Java 工作版本,但我很确定 Kotlin 有一个很好的方法。只是到目前为止我还没有找到它!
任何想法 ?
谢谢
解决方案
以下:
val result =
listOfMaps.asSequence()
.flatMap {
it.asSequence()
}.groupBy({ it.key }, { it.value })
将为您提供包含您请求的内容result
的类型。Map<Branch,List<Pair<String, Any>>>
推荐阅读
- swift - 使用 Dropbox 在同一个应用程序中记录多个用户
- python - 如何无限运行后台任务
- google-cloud-functions - 在 Actions on Google 上启动登录流程时,Dialogflow 应用停止工作
- c++ - 使用 while(cin>>) 的 C++ 代码无法终止并输出最后一个查询的答案
- javascript - 如何使用 Vuejs 以动态形式迭代和修改数据
- ruby-on-rails - 从路由名称查找路由的定义位置
- android - 实现共享位置地点选择器,与没有地点选择器的 WhatsApp 相同,因为它已被弃用
- vagrant - 运行厨房测试时无法接受许可证
- c# - 如何查找数字(在最小-最大范围内)和等于数字总和=一个数字的所有序列
- android - AzureSpatialAnchors 基本演示不保存