Por exemplo, eu tenho uma lista de strings como:
val list = listOf("a", "b", "c", "d")
e eu quero convertê-lo em um mapa, onde as strings são as chaves.
Eu sei que devo usar a .toMap()
função, mas não sei como e não vi nenhum exemplo disso.
dictionary
kotlin
LordScone
fonte
fonte
Pair
casos pode ser muito caro para grandes coleçõesDe
List
paraMap
comassociate
funçãoCom o Kotlin 1.3,
List
tem uma função chamadaassociate
.associate
tem a seguinte declaração:Uso:
De
List
paraMap
comassociateBy
funçãoCom Kotlin,
List
tem uma função chamadaassociateBy
.associateBy
tem a seguinte declaração:Uso:
fonte
* Referência: Documentação Kotlin
1- associar (para definir chaves e valores): Construa um mapa que possa definir elementos de chave e valor:
2- associarBy (basta definir chaves por cálculo): Construa um mapa para definir novas chaves, elementos análogos serão definidos para valores
3- associarCom (apenas definir valores por cálculo): Construir um mapa que possamos definir novos valores, elementos análogos serão definidos para chaves
Exemplo das dicas do Kotlin:
fonte
Você pode usar
associate
para esta tarefa:Neste exemplo, as seqüências de caracteres
list
tornam - se as chaves e seus comprimentos correspondentes (como exemplo) tornam-se os valores dentro do mapa.fonte
Se houver duplicatas em sua lista que não deseja perder, faça isso usando
groupBy
.Caso contrário, como todo mundo disse, use
associate/By/With
(que, no caso de duplicatas, acredito, retornará apenas o último valor com essa chave).Um exemplo de agrupamento de uma lista de pessoas por idade:
Resultados:
fonte
Isso mudou na versão RC.
estou usando
val map = list.groupByTo(destinationMap, {it.facebookId}, { it -> it.point })
fonte