Map.toList în Kotlin

Transformă map-ul într-o listă de perechi (cheie, valoare), pe care o poți sorta, filtra sau tăia.

Sintaxă
fun <K, V> Map<out K, V>.toList(): List<Pair<K, V>>

Ce face Map.toList

toList() pe un map dă o List<Pair<K, V>>, în ordinea intrărilor. Fiecare pereche are first (cheia) și second (valoarea) și se poate desface cu (k, v).

Este util când vrei operații de listă pe un map: sortare după valoare, primele n intrări, poziții. Drumul invers, de la listă de perechi la map, este toMap().

Ce returnează

O List<Pair<K, V>>.

Exemple

Exemplul 1: Top 3 după valoare

Transformăm în listă, sortăm descrescător după populație (second) și luăm primele trei.

fun main() {
    val populatie = mapOf("Iași" to 271, "Cluj" to 286, "Timișoara" to 250, "Constanța" to 263, "Brașov" to 237)
    val top = populatie.toList().sortedByDescending { it.second }.take(3)
    top.forEachIndexed { i, (oras, mii) -> println("${i + 1}. $oras – $mii mii") }
}

Rezultat

1. Cluj – 286 mii
2. Iași – 271 mii
3. Constanța – 263 mii

Exemplul 2: Dus-întors: map, listă, map

Lista de perechi poate fi filtrată, apoi transformată înapoi în map cu toMap().

fun main() {
    val note = mapOf("Ana" to 9, "Ion" to 4, "Maria" to 10)
    val perechi = note.toList()
    println(perechi)
    println(perechi.filter { it.second >= 5 }.toMap())
}

Rezultat

[(Ana, 9), (Ion, 4), (Maria, 10)]
{Ana=9, Maria=10}

Greșeli frecvente

  • Te aștepți ca toList() să dea doar valorile: dă perechi. Pentru valori folosește values.toList(), pentru chei keys.toList().

Comenzi înrudite

  • Iterable.toMap: Transformă o listă de perechi (cheie to valoare) într-un map; la chei repetate rămâne ultima valoare.
  • Map.keys: Proprietățile keys, values și entries dau cheile, valorile și perechile cheie–valoare ale unui map.
  • Iterable.sortedBy: Sortează elementele după valoarea calculată de o funcție, de exemplu elevii după medie sau orașele după populație.
  • Pair: O pereche de două valori, first și second; a to b este felul scurt de a crea un Pair, folosit în mapOf.