mapOf în Kotlin

Creează un map (dicționar cheie → valoare) din perechi scrise cu „to”; mutableMapOf dă unul pe care îl poți modifica.

Sintaxă
fun <K, V> mapOf(vararg perechi: Pair<K, V>): Map<K, V>
fun <K, V> mutableMapOf(vararg perechi: Pair<K, V>): MutableMap<K, V>

Ce face mapOf

Un Map leagă fiecare cheie de o valoare, ca un dicționar: numele elevului → nota, codul produsului → prețul. Cheile sunt unice; dacă aceeași cheie apare de două ori, rămâne ultima valoare.

Perechile se scriu cu cheie to valoare. mapOf creează un map doar pentru citire, mutableMapOf unul în care poți scrie cu map[cheie] = valoare sau șterge cu remove. Ambele păstrează ordinea în care au fost adăugate cheile (pe JVM sunt LinkedHashMap).

Citirea cu map[cheie] întoarce valoarea sau null dacă cheia lipsește, deci tipul rezultatului este V?.

Parametri

Parametru Descriere
perechi Perechi cheie to valoare. Toate cheile au același tip K, toate valorile tipul V.

Ce returnează

Map<K, V> sau MutableMap<K, V>, cu cheile în ordinea dată.

Exemple

Exemplul 1: Note și prețuri

note["Ana"] găsește valoarea după cheie. Pentru o cheie care nu există rezultatul este null.

fun main() {
    val note = mapOf("Ana" to 9, "Ion" to 7, "Maria" to 10)

    println(note)
    println("Nota Anei: ${note["Ana"]}")
    println("Nota lui Vlad: ${note["Vlad"]}")
    println("Câți elevi: ${note.size}")

    for ((nume, nota) in note) {
        println("$nume -> $nota")
    }
}

Rezultat

{Ana=9, Ion=7, Maria=10}
Nota Anei: 9
Nota lui Vlad: null
Câți elevi: 3
Ana -> 9
Ion -> 7
Maria -> 10

Exemplul 2: Map modificabil: stoc de magazin

Atribuirea cu paranteze drepte adaugă o cheie nouă sau o înlocuiește pe cea existentă. Ordinea de inserare se păstrează.

fun main() {
    val stoc = mutableMapOf("mere" to 40, "pere" to 15)

    stoc["prune"] = 22          // cheie nouă
    stoc["mere"] = 35           // înlocuiește valoarea
    stoc.remove("pere")

    println(stoc)
    println("Total kg: ${stoc.values.sum()}")
}

Rezultat

{mere=35, prune=22}
Total kg: 57

Exemplul 3: Chei duplicate

Cheia "Iași" apare de două ori; rămâne ultima valoare, pe poziția primei apariții.

fun main() {
    val populatie = mapOf("Iași" to 270_000, "Cluj" to 286_000, "Iași" to 271_000)
    println(populatie)
    println(populatie.size)
}

Rezultat

{Iași=271000, Cluj=286000}
2

Greșeli frecvente

  • Folosești map[cheie]!! și programul se oprește când cheia lipsește. Alege map[cheie] ?: valoareImplicita, getOrDefault sau getValue (cu mesaj clar).
  • Scrii mapOf("Ana", 9): argumentele trebuie să fie perechi, adică "Ana" to 9.
  • Încerci note["Ana"] = 10 pe un map creat cu mapOf: nu compilează. Folosește mutableMapOf.

Comenzi înrudite

  • hashMapOf: Creează un map modificabil de un tip anume: HashMap (fără ordine), LinkedHashMap (ordinea inserării) sau SortedMap (chei sortate).
  • buildList: Construiește o listă, un map sau o mulțime pas cu pas într-un bloc, apoi o întoarce doar pentru citire.
  • Map.getValue: Citește valoarea unei chei: getValue aruncă excepție dacă lipsește, getOrDefault și getOrElse dau o valoare de rezervă.
  • MutableMap.put: Adaugă o cheie cu valoarea ei sau înlocuiește valoarea unei chei existente; putAll copiază toate intrările altui map.
  • Map.forEach: Parcurge toate intrările unui map și execută o acțiune pentru fiecare pereche cheie–valoare.