Ce face Map.equals
a.equals(b) returnează true dacă b este tot un Map și conține exact aceleași chei, fiecare cu o valoare egală. Ordinea nu contează: un HashMap, un TreeMap și un Map.of cu aceleași perechi sunt egale.
hashCode() este suma codurilor hash ale perechilor, deci map-urile egale au același cod. Valorile se compară cu equals: pentru valori care sunt array-uri (int[]), comparația verifică identitatea obiectelor, nu conținutul.
Parametri
| Parametru | Descriere |
|---|---|
o |
Obiectul cu care se compară. |
Ce returnează
equals: boolean. hashCode: int.
Exemple
Exemplul 1: Aceleași perechi, implementări diferite
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Map<String, Integer> a = new HashMap<>();
a.put("Iași", 3);
a.put("Cluj", 5);
Map<String, Integer> b = new TreeMap<>(Map.of("Cluj", 5, "Iași", 3));
Map<String, Integer> c = Map.of("Cluj", 5, "Iași", 4);
System.out.println("a = b: " + a.equals(b));
System.out.println("a = c: " + a.equals(c));
System.out.println("hash egal a, b: " + (a.hashCode() == b.hashCode()));
}
}
Rezultat
a = b: true
a = c: false
hash egal a, b: true
Exemplul 2: Verifică dacă stocul s-a schimbat
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Map<String, Integer> stoc = new TreeMap<>(Map.of("mere", 10, "pere", 4));
Map<String, Integer> salvat = Map.copyOf(stoc);
System.out.println("Schimbat? " + !stoc.equals(salvat));
stoc.merge("pere", -1, Integer::sum);
System.out.println("Schimbat? " + !stoc.equals(salvat));
}
}
Rezultat
Schimbat? false
Schimbat? true
Greșeli frecvente
- Compari map-uri cu
==. Operatorul verifică dacă e același obiect. - Ai ca valori array-uri și aștepți ca
equalssă compare conținutul. Folosește liste în loc de array-uri sau compară cuArrays.equals.
Comenzi înrudite
Map: Interfața pentru dicționare: perechi cheie → valoare, în care găsești rapid valoarea după cheie. Cheile sunt unice.Set.equals: Două mulțimi sunt egale dacă au exact aceleași elemente, indiferent de ordine sau de implementare (HashSet, TreeSet).List.equals: Două liste sunt egale dacă au aceleași elemente în aceeași ordine, indiferent de clasa lor; hashCode urmează aceeași regulă.Arrays.equals: Compară două array-uri după conținut: true dacă au aceeași lungime și aceleași elemente pe aceleași poziții.