Ce face Map.remove
map.remove(cheie) scoate perechea și returnează valoarea pe care o avea cheia, sau null dacă cheia nu exista. Așa poți „lua și șterge” într-un singur pas.
map.remove(cheie, valoare) șterge perechea doar dacă cheia are exact acea valoare și returnează true/false. Este util ca să nu ștergi ceva ce între timp a fost schimbat.
Pentru a șterge mai multe perechi după o condiție, folosește map.entrySet().removeIf(...), map.values().removeIf(...) sau map.keySet().removeIf(...).
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia perechii de șters. |
value |
Valoarea pe care trebuie să o aibă cheia ca ștergerea să aibă loc. |
Ce returnează
Valoarea ștearsă sau null; la varianta cu două argumente, true dacă s-a șters.
Exemple
Exemplul 1: Anularea unei rezervări
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Map<Integer, String> camere = new TreeMap<>();
camere.put(101, "Ana");
camere.put(102, "Radu");
camere.put(103, "Elena");
System.out.println("Anulat: " + camere.remove(102));
System.out.println("Din nou: " + camere.remove(102));
System.out.println("Ștergere 103 doar dacă e Mihai: " + camere.remove(103, "Mihai"));
System.out.println("Ștergere 103 doar dacă e Elena: " + camere.remove(103, "Elena"));
System.out.println(camere);
}
}
Rezultat
Anulat: Radu
Din nou: null
Ștergere 103 doar dacă e Mihai: false
Ștergere 103 doar dacă e Elena: true
{101=Ana}
Exemplul 2: Ștergerea mai multor perechi după o condiție
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Map<String, Integer> note = new TreeMap<>(Map.of("Ana", 9, "Radu", 4, "Elena", 10, "Mihai", 3));
note.entrySet().removeIf(e -> e.getValue() < 5);
System.out.println("Promovați: " + note);
note.keySet().removeIf(nume -> nume.startsWith("E"));
System.out.println("Fără cei cu E: " + note);
}
}
Rezultat
Promovați: {Ana=9, Elena=10}
Fără cei cu E: {Ana=9}
Greșeli frecvente
- Ștergi cu
map.remove(k)în timp ce parcurgimap.keySet()cu for-each. ApareConcurrentModificationException; foloseșteremoveIfpe vedere. - Pe un
Map<Integer, ...>crezi căremove(0)înseamnă „primul”. Înseamnă cheia 0.
Comenzi înrudite
Map.put: put adaugă o pereche cheie → valoare sau înlocuiește valoarea unei chei existente; putAll copiază toate perechile altui map.Map.size: size() spune câte perechi cheie → valoare are map-ul, isEmpty() dacă e gol, clear() le șterge pe toate.Collection.removeIf: Șterge din colecție toate elementele pentru care condiția dată este adevărată. Returnează true dacă s-a șters ceva.Map.entrySet: entrySet() dă perechile cheie-valoare ale unui map, ca obiecte Map.Entry; Map.entry(k, v) creează o astfel de pereche.Map.replace: replace schimbă valoarea unei chei doar dacă cheia există; replaceAll recalculează toate valorile cu o funcție.