我有一个 Kotlin 列表。我需要从列表的每个元素创建一个映射到一个空的可变集,如下所示 -
var mutableMap: MutableMap<Int, MutableSet<Int>> = mutableMapOf(someList.map{ it to mutableSetOf<Int>() })
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误 -
Type mismatch.
Required:
Pair<TypeVariable(K), TypeVariable(V)>
Found:
List<Pair<Int, MutableSet<Int>>>
Run Code Online (Sandbox Code Playgroud)
我知道 mutableMapOf() 接受varargs pairs,所以我尝试了扩展运算符 ( *),但这也不起作用。请帮助我实现结果。
扩展运算符适用于数组,不适用于列表。另外,如果将变量类型定义为集合的映射而不是可变集合的可变映射,则将其转换为只读。所以要修复你的代码:
var mutableMap: MutableMap<Int, MutableSet<Int>> = mutableMapOf(*someList.map{ it to mutableSetOf<Int>() }.toTypedArray())
Run Code Online (Sandbox Code Playgroud)
但这样做会更干净:
val map = someList.associateWith { mutableSetOf<Int>() }.toMutableMap()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9138 次 |
| 最近记录: |