Iterable.toMap în Kotlin

Transformă o listă de perechi (cheie to valoare) într-un map; la chei repetate rămâne ultima valoare.

Sintaxă
fun <K, V> Iterable<Pair<K, V>>.toMap(): Map<K, V>
fun <K, V> Map<out K, V>.toMutableMap(): MutableMap<K, V>

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ște associate, associateBy sau associateWith.
  • Pierzi valori când cheile se repetă: toMap păstrează doar ultima. Pentru toate valorile folosește groupBy.

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.