MutableMap.remove în Kotlin

Șterge o cheie (și valoarea ei) din map și întoarce valoarea ștearsă sau null dacă cheia nu exista.

Sintaxă
fun remove(cheie: K): V?
fun remove(cheie: K, valoare: V): Boolean   // JVM: doar dacă valoarea se potrivește
operator fun <K, V> MutableMap<K, V>.minusAssign(cheie: K)   // map -= cheie

Ce face MutableMap.remove

remove(k) șterge intrarea cu cheia k și întoarce valoarea pe care o avea, ca să o poți folosi. Dacă cheia nu exista, întoarce null și nu se întâmplă nimic altceva.

Varianta remove(k, v) șterge doar dacă cheia are exact valoarea v și întoarce true/false. Operatorul map -= k șterge o cheie fără să întoarcă nimic.

Pentru a șterge mai multe intrări după o condiție, folosește map.entries.removeAll { ... } sau map.keys.removeAll { ... }.

Parametri

Parametru Descriere
cheie Cheia de șters.
valoare Opțional: se șterge doar dacă valoarea curentă este aceasta.

Ce returnează

Valoarea ștearsă sau null (la remove(k, v): true/false).

Exemple

Exemplul 1: Ștergerea unui produs din coș

Primul apel întoarce cantitatea ștearsă. Al doilea nu găsește cheia și întoarce null.

fun main() {
    val cos = mutableMapOf("pâine" to 2, "lapte" to 1, "mere" to 6)
    val scos = cos.remove("lapte")
    println("Am scos laptele, cantitate: $scos")
    println(cos.remove("cafea"))
    cos -= "mere"
    println(cos)
}

Rezultat

Am scos laptele, cantitate: 1
null
{pâine=2}

Exemplul 2: remove cu valoare și ștergere după condiție

Rezervarea se anulează doar dacă locul aparține încă Anei. Apoi ștergem toate locurile libere (valoare goală).

fun main() {
    val locuri = mutableMapOf("A1" to "Ana", "A2" to "", "A3" to "Ion", "A4" to "")
    println(locuri.remove("A3", "Ana"))
    println(locuri.remove("A1", "Ana"))
    locuri.entries.removeAll { it.value.isEmpty() }
    println(locuri)
}

Rezultat

false
true
{A3=Ion}

Greșeli frecvente

  • Ștergi chei într-o buclă for ((k, v) in map): ConcurrentModificationException. Folosește entries.removeAll { ... }.
  • Scrii map.remove(k)!! fără să fii sigur că cheia există: NullPointerException.

Comenzi înrudite

  • MutableMap.put: Adaugă o cheie cu valoarea ei sau înlocuiește valoarea unei chei existente; putAll copiază toate intrările altui map.
  • 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.
  • MutableCollection.removeAll: Șterge pe loc toate elementele care îndeplinesc o condiție (removeAll, removeIf) sau păstrează doar pe cele care o îndeplinesc (retainAll).
  • Map.keys: Proprietățile keys, values și entries dau cheile, valorile și perechile cheie–valoare ale unui map.