Ce face Iterable.toMap
toMap() se aplică pe o colecție de perechi Pair<K, V>: primul element al fiecărei perechi devine cheie, al doilea valoare. Ordinea perechilor se păstrează în map.
Dacă o cheie apare de mai multe ori, rămâne ultima valoare. Perechile apar des din alte funcții: zip, map { it.nume to it.varsta } sau Map.toList().
Pentru un map modificabil, continuă cu toMutableMap().
Ce returnează
Un Map<K, V> nou.
Exemple
Exemplul 1: Din zip în map
zip creează perechi oraș–județ, iar toMap le face map.
fun main() {
val orase = listOf("Iași", "Cluj-Napoca", "Constanța")
val judete = listOf("IS", "CJ", "CT")
val coduri = orase.zip(judete).toMap()
println(coduri)
println(coduri["Cluj-Napoca"])
}
Rezultat
{Iași=IS, Cluj-Napoca=CJ, Constanța=CT}
CJ
Exemplul 2: Chei repetate și map modificabil
Ion apare de două ori, deci rămâne vârsta de la ultima apariție. Apoi adăugăm o persoană în copia modificabilă.
fun main() {
val perechi = listOf("Ana" to 20, "Ion" to 22, "Ion" to 23)
val varste = perechi.toMap().toMutableMap()
varste["Maria"] = 19
println(varste)
}
Rezultat
{Ana=20, Ion=23, Maria=19}
Greșeli frecvente
- Apelezi
toMap()pe o listă care nu conține perechi: nu compilează. Foloseșteassociate,associateBysauassociateWith. - Pierzi valori când cheile se repetă:
toMappăstrează doar ultima. Pentru toate valorile foloseștegroupBy.
Comenzi înrudite
Iterable.associate: Construiește un map din colecție: pentru fiecare element lambda întoarce o pereche cheie to valoare.Iterable.zip: zip pune față în față elementele a două colecții, pe aceeași poziție; unzip desparte o listă de perechi în două liste.Map.toList: Transformă map-ul într-o listă de perechi (cheie, valoare), pe care o poți sorta, filtra sau tăia.Pair: O pereche de două valori, first și second; a to b este felul scurt de a crea un Pair, folosit în mapOf.mapOf: Creează un map (dicționar cheie → valoare) din perechi scrise cu „to”; mutableMapOf dă unul pe care îl poți modifica.