Map.keys în Kotlin

Proprietățile keys, values și entries dau cheile, valorile și perechile cheie–valoare ale unui map.

Sintaxă
val keys: Set<K>
val values: Collection<V>
val entries: Set<Map.Entry<K, V>>

Ce face Map.keys

keys este mulțimea cheilor (fără duplicate, prin definiție). values este colecția valorilor (pot exista valori repetate). entries este mulțimea intrărilor; fiecare intrare are key și value.

Toate trei sunt vederi asupra map-ului, nu copii: pe un MutableMap, dacă ștergi o cheie din keys, dispare și intrarea din map. Pe ele poți folosi toate funcțiile de colecții: sum(), sorted(), filter, max().

Ce returnează

keys: Set<K>. values: Collection<V>. entries: Set<Map.Entry<K, V>>.

Exemple

Exemplul 1: Chei, valori, intrări

Pe values facem suma și maximul; pe entries avem acces la ambele părți.

fun main() {
    val vanzari = mapOf("ianuarie" to 120, "februarie" to 95, "martie" to 140)
    println(vanzari.keys)
    println(vanzari.values)
    println("Total: ${vanzari.values.sum()}, maxim: ${vanzari.values.max()}")
    for (intrare in vanzari.entries) {
        println("${intrare.key} -> ${intrare.value}")
    }
}

Rezultat

[ianuarie, februarie, martie]
[120, 95, 140]
Total: 355, maxim: 140
ianuarie -> 120
februarie -> 95
martie -> 140

Exemplul 2: Ștergere prin keys

keys este o vedere: ștergând din ea cheile scurte, intrările dispar și din map.

fun main() {
    val coduri = mutableMapOf("RO" to "România", "MD" to "Moldova", "AUT" to "Austria")
    coduri.keys.removeAll { it.length > 2 }
    println(coduri)
}

Rezultat

{RO=România, MD=Moldova}

Exemplul 3: Chei sortate pentru afișare

Pentru o afișare în ordine alfabetică sortăm cheile și citim valorile cu getValue.

fun main() {
    val note = mapOf("Radu" to 8, "Ana" to 10, "Maria" to 9)
    for (nume in note.keys.sorted()) {
        println("$nume: ${note.getValue(nume)}")
    }
}

Rezultat

Ana: 10
Maria: 9
Radu: 8

Greșeli frecvente

  • Aștepți ca values să fie un Set: este o Collection și poate avea valori repetate. Pentru valori unice folosește values.toSet().
  • Păstrezi map.keys într-o variabilă crezând că ai o copie: se schimbă odată cu map-ul. Fă o copie cu toList() / toSet().

Comenzi înrudite

  • Map.forEach: Parcurge toate intrările unui map și execută o acțiune pentru fiecare pereche cheie–valoare.
  • Map.containsKey: Verifică dacă map-ul are o anumită cheie (containsKey, operatorul in) sau o anumită valoare (containsValue).
  • Map.toList: Transformă map-ul într-o listă de perechi (cheie, valoare), pe care o poți sorta, filtra sau tăia.
  • mapOf: Creează un map (dicționar cheie → valoare) din perechi scrise cu „to”; mutableMapOf dă unul pe care îl poți modifica.