Ce face Map.replace
replace(cheie, valoare) este ca put, dar nu adaugă chei noi: dacă cheia lipsește, nu face nimic și returnează null. Varianta replace(cheie, veche, noua) schimbă valoarea doar dacă era exact veche și returnează true/false.
replaceAll((k, v) -> ...) trece prin toate perechile și pune ca valoare nouă rezultatul funcției. Cheile rămân aceleași. Este felul simplu de a aplica o majorare de preț, o rotunjire sau o conversie tuturor valorilor.
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia a cărei valoare se schimbă. |
oldValue / newValue |
Valoarea așteptată și valoarea nouă. |
function |
Funcția care primește cheia și valoarea și returnează valoarea nouă. |
Ce returnează
replace(k, v): valoarea veche sau null. replace(k, veche, noua): boolean. replaceAll: nimic.
Exemple
Exemplul 1: Schimbare de preț doar pentru produse existente
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Map<String, Integer> preturi = new TreeMap<>(Map.of("pâine", 5, "lapte", 8));
System.out.println(preturi.replace("lapte", 9));
System.out.println(preturi.replace("cafea", 30)); // nu există, nu se adaugă
System.out.println(preturi.replace("pâine", 4, 6)); // prețul nu era 4
System.out.println(preturi.replace("pâine", 5, 6));
System.out.println(preturi);
}
}
Rezultat
8
null
false
true
{lapte=9, pâine=6}
Exemplul 2: Majorare de 10% pentru toate prețurile
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Map<String, Double> preturi = new TreeMap<>(Map.of("ciorbă", 18.0, "sarmale", 30.0, "papanași", 20.0));
preturi.replaceAll((produs, pret) -> Math.round(pret * 1.10 * 100) / 100.0);
System.out.println(preturi);
Map<String, String> orase = new TreeMap<>(Map.of("is", "iași", "cj", "cluj"));
orase.replaceAll((cod, nume) -> cod.toUpperCase() + " - " + nume.substring(0, 1).toUpperCase() + nume.substring(1));
System.out.println(orase);
}
}
Rezultat
{ciorbă=19.8, papanași=22.0, sarmale=33.0}
{cj=CJ - Cluj, is=IS - Iași}
Greșeli frecvente
- Folosești
replaceca să adaugi o cheie nouă. Nu adaugă nimic; foloseșteput. - În
replaceAllîncerci să schimbi cheile. Funcția poate schimba doar valorile; pentru chei noi, construiește un map nou.
Comenzi înrudite
Map.put: put adaugă o pereche cheie → valoare sau înlocuiește valoarea unei chei existente; putAll copiază toate perechile altui map.Map.compute: compute recalculează valoarea unei chei pornind de la cea veche (sau null); computeIfPresent o face doar dacă cheia există.List.replaceAll: Înlocuiește fiecare element al listei cu rezultatul unei funcții aplicate pe el, pe loc.Map.merge: Pune valoarea dacă cheia lipsește; dacă există, combină valoarea veche cu cea nouă (de exemplu le adună). Ideal pentru numărători și totaluri.