Map.put în Java

put adaugă o pereche cheie → valoare sau înlocuiește valoarea unei chei existente; putAll copiază toate perechile altui map.

Sintaxă
V put(K key, V value)
void putAll(Map<? extends K, ? extends V> m)

Ce face Map.put

map.put(cheie, valoare) leagă cheia de valoare. Dacă cheia nu exista, perechea este adăugată și metoda returnează null. Dacă exista, valoarea veche este înlocuită și metoda o returnează pe cea veche.

map.putAll(altul) face put pentru fiecare pereche din altul: cheile noi se adaugă, cele comune primesc valoarea din altul. Dacă vrei să nu suprascrii valori existente, folosește putIfAbsent.

Parametri

Parametru Descriere
key Cheia.
value Valoarea asociată.
m Map-ul din care se copiază perechile.

Ce returnează

put: valoarea veche sau null. putAll: nimic.

Exemple

Exemplul 1: Actualizarea stocului

import java.util.Map;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> stoc = new TreeMap<>();
        System.out.println(stoc.put("mere", 40));
        System.out.println(stoc.put("pere", 25));
        System.out.println(stoc.put("mere", 35));   // înlocuiește, returnează 40
        System.out.println(stoc);
    }
}

Rezultat

null
null
40
{mere=35, pere=25}

Exemplul 2: Setări implicite peste care pun setările utilizatorului

Întâi setările implicite, apoi putAll cu ale utilizatorului: valorile lui le înlocuiesc pe cele comune.

import java.util.LinkedHashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<String, String> setari = new LinkedHashMap<>();
        setari.put("limbă", "ro");
        setari.put("temă", "luminoasă");
        setari.put("notificări", "da");

        Map<String, String> aleUtilizatorului = new LinkedHashMap<>();
        aleUtilizatorului.put("temă", "întunecată");
        aleUtilizatorului.put("font", "mare");

        setari.putAll(aleUtilizatorului);
        System.out.println(setari);
    }
}

Rezultat

{limbă=ro, temă=întunecată, notificări=da, font=mare}

Greșeli frecvente

  • Crezi că put pe o cheie existentă adaugă a doua valoare. Un map ține o singură valoare pe cheie; pentru mai multe, folosește Map<K, List<V>> cu computeIfAbsent.
  • Folosești put pe un Map.of(...). Map-ul este nemodificabil și apare UnsupportedOperationException.

Comenzi înrudite

  • Map: Interfața pentru dicționare: perechi cheie → valoare, în care găsești rapid valoarea după cheie. Cheile sunt unice.
  • Map.get: get returnează valoarea unei chei sau null dacă lipsește; getOrDefault returnează o valoare de rezervă în loc de null.
  • Map.putIfAbsent: Pune valoarea doar dacă cheia lipsește (sau are null). Nu suprascrie o valoare existentă; returnează valoarea care era deja.
  • 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.
  • Map.replace: replace schimbă valoarea unei chei doar dacă cheia există; replaceAll recalculează toate valorile cu o funcție.