Ce face Map.containsKey
containsKey(cheie) returnează true dacă cheia are o pereche în map. Este la fel de rapidă ca get (aproape constantă la HashMap, logaritmică la TreeMap).
containsValue(valoare) caută printre valori. Map-urile nu sunt organizate după valori, așa că trebuie să le verifice pe toate, una câte una: e lentă pentru map-uri mari. Dacă o folosești des, păstrează și un map invers (valoare → cheie).
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia căutată. |
value |
Valoarea căutată (comparată cu equals). |
Ce returnează
true sau false.
Exemple
Exemplul 1: Utilizator existent și email folosit
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, String> conturi = Map.of(
"ana92", "ana@exemplu.ro",
"radu_m", "radu@exemplu.ro");
System.out.println("Există ana92? " + conturi.containsKey("ana92"));
System.out.println("Există elena? " + conturi.containsKey("elena"));
System.out.println("Email radu@exemplu.ro folosit? " + conturi.containsValue("radu@exemplu.ro"));
}
}
Rezultat
Există ana92? true
Există elena? false
Email radu@exemplu.ro folosit? true
Exemplul 2: containsKey diferă de get(…) != null
Un HashMap poate ține valoarea null: cheia există, dar get returnează tot null.
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, String> telefon = new HashMap<>();
telefon.put("Ana", "0722 111 222");
telefon.put("Radu", null); // știm că nu are telefon
for (String nume : new String[] {"Ana", "Radu", "Elena"}) {
System.out.println(nume + ": containsKey=" + telefon.containsKey(nume) + ", get=" + telefon.get(nume));
}
}
}
Rezultat
Ana: containsKey=true, get=0722 111 222
Radu: containsKey=true, get=null
Elena: containsKey=false, get=null
Greșeli frecvente
- Scrii
if (map.containsKey(k)) { v = map.get(k); }peste tot. Merge, dar caută de două ori;getOrDefaultsau un singurgetcu verificare denulle suficient când nu ai valorinull. - Folosești
containsValueîntr-o buclă pe un map mare. Fiecare apel parcurge tot map-ul.
Comenzi înrudite
Map.get: get returnează valoarea unei chei sau null dacă lipsește; getOrDefault returnează o valoare de rezervă în loc de null.Set.contains: contains verifică rapid dacă un element este în mulțime; containsAll verifică dacă sunt toate elementele altei colecții.Map.putIfAbsent: Pune valoarea doar dacă cheia lipsește (sau are null). Nu suprascrie o valoare existentă; returnează valoarea care era deja.Map.keySet: keySet() dă mulțimea cheilor unui map, values() colecția valorilor. Sunt vederi legate de map, nu copii.