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. Alegemap[cheie] ?: valoareImplicita,getOrDefaultsaugetValue(cu mesaj clar). - Scrii
mapOf("Ana", 9): argumentele trebuie să fie perechi, adică"Ana" to 9. - Încerci
note["Ana"] = 10pe un map creat cumapOf: nu compilează. FoloseștemutableMapOf.
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.