Por ejemplo, tengo una lista de cadenas como:
val list = listOf("a", "b", "c", "d")
y quiero convertirlo en un mapa, donde las cadenas son las claves.
Sé que debería usar la .toMap()
función, pero no sé cómo, y no he visto ningún ejemplo de ella.
dictionary
kotlin
LordScone
fuente
fuente
Pair
instancias podría ser muy costosa para grandes coleccionesDe
List
aMap
conassociate
funciónCon Kotlin 1.3,
List
tiene una función llamadaassociate
.associate
tiene la siguiente declaración:Uso:
De
List
aMap
conassociateBy
funciónCon Kotlin,
List
tiene una función llamadaassociateBy
.associateBy
tiene la siguiente declaración:Uso:
fuente
* Referencia: documentación de Kotlin
1- asociado (para establecer claves y valores): cree un mapa que pueda establecer elementos clave y de valor:
2- AssociateBy (solo configure Keys por cálculo): construya un mapa en el que podamos establecer nuevas Keys, se establecerán elementos análogos para los valores
3- AssociatedWith (solo establecer valores por cálculo): construir un mapa que podamos establecer nuevos valores, se establecerán elementos análogos para las claves
Ejemplo de consejos de Kotlin:
fuente
Puede usar
associate
para esta tarea:En este ejemplo, las cadenas se
list
convierten en las claves y sus longitudes correspondientes (como ejemplo) se convierten en los valores dentro del mapa.fuente
Si tiene duplicados en su lista que no desea perder, puede hacerlo usando
groupBy
.De lo contrario, como todos los demás dijeron, use
associate/By/With
(que en el caso de duplicados, creo, solo devolverá el último valor con esa clave).Un ejemplo que agrupa una lista de personas por edad:
Resultados:
fuente
Eso ha cambiado en la versión RC.
estoy usando
val map = list.groupByTo(destinationMap, {it.facebookId}, { it -> it.point })
fuente