Kotlin:ペアのリストから、変更可能なマップを作成し、可変引数ではありませんか?

Dhruv Chadha:

私はKotlin内のリストを持っています。私は空の可変設定するには、リストのすべての要素からマップを作成する必要があり、このような何か -

var mutableMap: MutableMap<Int, MutableSet<Int>> = mutableMapOf(someList.map{ it to mutableSetOf<Int>() })

しかし、私はこのエラーを取得しています -

Type mismatch.
Required:
Pair<TypeVariable(K), TypeVariable(V)>
Found:
List<Pair<Int, MutableSet<Int>>>

私はmutableMapOf()が受け入れることを知っているvarargs pairs私はスプレッド演算子を試してみましたので、(、 *)、それもdidntの仕事。私は結果を達成するのを助けるしてください。

Tenfour04:

スプレッド演算子は配列ではなく、リストのです。あなたの代わりにMutableSetsのMutableMapの集合の地図としてあなたの変数の型を定義する場合にも、あなたはそれが不変であることをキャストしています。だからあなたのコードを修正するには:

var mutableMap: MutableMap<Int, MutableSet<Int>> = mutableMapOf(*someList.map{ it to mutableSetOf<Int>() }.toTypedArray())

しかし、行うにはきれいになります:

val map = someList.associateWith { mutableSetOf<Int>() }.toMutableMap()

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=378039&siteId=1