Ce face MutableMap.put
put(k, v) pune valoarea v la cheia k. Dacă cheia exista, valoarea veche este înlocuită și put o întoarce; dacă nu exista, întoarce null. Forma obișnuită în Kotlin este map[k] = v, care face același lucru fără să întoarcă nimic.
putAll(alt) copiază toate intrările din alt map (sau dintr-o listă de perechi). La chei comune câștigă valorile din alt. Operatorul += pe un MutableMap face același lucru.
Funcționează doar pe MutableMap (creat cu mutableMapOf, hashMapOf etc.).
Parametri
| Parametru | Descriere |
|---|---|
cheie / valoare |
Intrarea de adăugat sau de actualizat. |
alt |
La putAll: map-ul (sau perechile) de copiat. |
Ce returnează
put: valoarea veche sau null. putAll și map[k] = v: nimic.
Exemple
Exemplul 1: Adăugare și actualizare
Prima operație adaugă „ouă” (valoare veche null). A doua schimbă prețul laptelui și întoarce prețul vechi.
fun main() {
val preturi = mutableMapOf("pâine" to 4.5, "lapte" to 7.0)
println(preturi.put("ouă", 12.9))
println(preturi.put("lapte", 7.5))
preturi["unt"] = 9.9
println(preturi)
}
Rezultat
null
7.0
{pâine=4.5, lapte=7.5, ouă=12.9, unt=9.9}
Exemplul 2: putAll și +=
Lista nouă de prețuri suprascrie pâinea și adaugă mierea. Apoi += adaugă încă o intrare.
fun main() {
val preturi = mutableMapOf("pâine" to 4.5, "lapte" to 7.0)
val actualizari = mapOf("pâine" to 5.0, "miere" to 30.0)
preturi.putAll(actualizari)
println(preturi)
preturi += "cafea" to 25.0
println(preturi)
}
Rezultat
{pâine=5.0, lapte=7.0, miere=30.0}
{pâine=5.0, lapte=7.0, miere=30.0, cafea=25.0}
Exemplul 3: Numărarea cu put
Pentru fiecare cuvânt citim numărul de până acum (sau 0) și punem valoarea mărită. Ordinea cheilor este cea a primei apariții.
fun main() {
val text = "ana are mere ana are pere"
val frecventa = mutableMapOf<String, Int>()
for (cuv in text.split(" ")) {
frecventa[cuv] = (frecventa[cuv] ?: 0) + 1
}
println(frecventa)
}
Rezultat
{ana=2, are=2, mere=1, pere=1}
Greșeli frecvente
- Apelezi
putsaumap[k] = vpe un map creat cumapOf: nu compilează. FoloseștemutableMapOf. - Te aștepți ca
putpe o cheie existentă să păstreze ambele valori: un map are o singură valoare pe cheie. Pentru mai multe valori, folosește unMap<K, MutableList<V>>cugetOrPut.
Comenzi înrudite
MutableMap.remove: Șterge o cheie (și valoarea ei) din map și întoarce valoarea ștearsă sau null dacă cheia nu exista.MutableMap.getOrPut: Întoarce valoarea cheii; dacă lipsește, o calculează cu lambda, o salvează în map și o întoarce.MutableMap.merge: Pune valoarea dacă cheia lipsește; dacă există, o combină cu cea veche folosind funcția dată (de exemplu adunare).Map.plus: Operatorii + și – pe map-uri: creează un map nou cu intrări adăugate sau cu chei scoase, fără să schimbe originalul.mapOf: Creează un map (dicționar cheie → valoare) din perechi scrise cu „to”; mutableMapOf dă unul pe care îl poți modifica.