Kotlin:从对列表创建可变映射,而不是可变参数?

Dhr*_*dha 4 kotlin

我有一个 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,所以我尝试了扩展运算符 ( *),但这也不起作用。请帮助我实现结果。

Ten*_*r04 8

扩展运算符适用于数组,不适用于列表。另外,如果将变量类型定义为集合的映射而不是可变集合的可变映射,则将其转换为只读。所以要修复你的代码:

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)