Par exemple, j'ai une liste de chaînes comme:
val list = listOf("a", "b", "c", "d")
et je veux le convertir en une carte, où les chaînes sont les clés.
Je sais que je devrais utiliser la .toMap()
fonction, mais je ne sais pas comment et je n'en ai vu aucun exemple.
dictionary
kotlin
LordScone
la source
la source
Pair
instances peuvent être très coûteuses pour les grandes collectionsDe
List
àMap
avecassociate
fonctionAvec Kotlin 1.3,
List
a une fonction appeléeassociate
.associate
a la déclaration suivante:Usage:
De
List
àMap
avecassociateBy
fonctionAvec Kotlin,
List
a une fonction appeléeassociateBy
.associateBy
a la déclaration suivante:Usage:
la source
* Référence: Documentation Kotlin
1- associer (pour définir à la fois les clés et les valeurs): Construisez une carte qui peut définir des éléments clé et valeur:
2- associéBy (il suffit de définir les clés par calcul): Construisez une carte que nous pouvons définir de nouvelles clés, des éléments analogues seront définis pour les valeurs
3- associé avec (il suffit de définir les valeurs par calcul): Construisez une carte que nous pouvons définir de nouvelles valeurs, des éléments analogues seront définis pour les clés
Exemple de conseils Kotlin:
la source
Vous pouvez utiliser
associate
pour cette tâche:Dans cet exemple, les chaînes de
list
deviennent les clés et leurs longueurs correspondantes (à titre d'exemple) deviennent les valeurs à l'intérieur de la carte.la source
Si vous avez des doublons dans votre liste que vous ne voulez pas perdre, vous pouvez le faire en utilisant
groupBy
.Sinon, comme tout le monde l'a dit, utilisez
associate/By/With
(qui dans le cas de doublons, je crois, ne renverra que la dernière valeur avec cette clé).Un exemple de regroupement d'une liste de personnes par âge:
Résultats:
la source
Cela a changé sur la version RC.
j'utilise
val map = list.groupByTo(destinationMap, {it.facebookId}, { it -> it.point })
la source