Kotlin: Criar um mapa mutável da lista de pares, e não varargs?

Dhruv Chadha:

Eu tenho uma lista de Kotlin. Eu preciso criar um mapa de cada elemento da lista, a um conjunto mutável vazio, algo como isto -

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

Mas eu estou recebendo este erro -

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

Eu sei que mutableMapOf () aceita varargs pairs, então eu tentei o operador spread ( *), mas que o trabalho também não funcionavam. Por favor, me ajudar a alcançar o resultado.

Tenfour04:

O operador spread é para Arrays, não listas. Além disso, se você define o seu tipo de variável como um Mapa de Conjuntos em vez de um MutableMap de MutableSets, você está lançando-o para ser imutável. Então, para corrigir o seu código:

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

Mas seria mais limpo para fazer:

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

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=378038&siteId=1
Recomendado
Clasificación