Ce face Map.get
map.get(cheie) caută cheia și returnează valoarea ei. Dacă cheia nu există, returnează null. Atenție la tipurile numerice: int x = map.get("lipsă"); aruncă NullPointerException, pentru că null nu se poate transforma în int.
getOrDefault(cheie, rezerva) returnează valoarea, iar dacă cheia lipsește returnează rezerva. Map-ul nu se modifică. Este forma comodă pentru numărători și setări cu valori implicite.
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia căutată. |
defaultValue |
Valoarea returnată când cheia nu există. |
Ce returnează
Valoarea găsită, null (la get) sau valoarea de rezervă.
Exemple
Exemplul 1: Prefixul telefonic al județului
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, String> prefixe = Map.of("Iași", "0232", "Cluj", "0264", "București", "021");
System.out.println("Iași: " + prefixe.get("Iași"));
System.out.println("Vaslui: " + prefixe.get("Vaslui"));
System.out.println("Vaslui: " + prefixe.getOrDefault("Vaslui", "necunoscut"));
}
}
Rezultat
Iași: 0232
Vaslui: null
Vaslui: necunoscut
Exemplul 2: Numărarea literelor cu getOrDefault
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Map<Character, Integer> litere = new TreeMap<>();
for (char c : "mississippi".toCharArray()) {
litere.put(c, litere.getOrDefault(c, 0) + 1);
}
System.out.println(litere);
}
}
Rezultat
{i=4, m=1, p=2, s=4}
Exemplul 3: null în int: NullPointerException
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> note = Map.of("Ana", 9);
try {
int n = note.get("Radu");
System.out.println(n);
} catch (NullPointerException e) {
System.out.println("Radu nu are notă: get a returnat null");
}
int sigur = note.getOrDefault("Radu", 0);
System.out.println("Cu getOrDefault: " + sigur);
}
}
Rezultat
Radu nu are notă: get a returnat null
Cu getOrDefault: 0
Greșeli frecvente
- Pui rezultatul lui
getdirect într-unint/double. Dacă cheia lipsește, apareNullPointerException. - Folosești
get(x) == nullca să afli dacă cheia există, deși map-ul poate ține valorinull. FoloseștecontainsKey. - Crezi că
getOrDefaultadaugă valoarea de rezervă în map. Nu o adaugă; pentru asta existăputIfAbsentșicomputeIfAbsent.
Comenzi înrudite
Map: Interfața pentru dicționare: perechi cheie → valoare, în care găsești rapid valoarea după cheie. Cheile sunt unice.Map.put: put adaugă o pereche cheie → valoare sau înlocuiește valoarea unei chei existente; putAll copiază toate perechile altui map.Map.containsKey: containsKey verifică rapid dacă o cheie există în map; containsValue caută o valoare, mai lent, printre toate perechile.Map.computeIfAbsent: Dacă cheia lipsește, calculează valoarea cu funcția dată și o pune în map. Returnează valoarea (nouă sau existentă). Ideal pentru grupări.Optional.of: of(x) creează un Optional cu o valoare sigur prezentă, ofNullable(x) unul care e gol dacă x este null, empty() unul gol.