Ce face Set.equals
a.equals(b) returnează true dacă b este tot un Set, are aceeași mărime și conține fiecare element din a. Ordinea nu contează, iar implementarea nici atât: un HashSet și un TreeSet cu aceleași valori sunt egale.
O mulțime nu este egală cu o listă, chiar dacă au aceleași elemente. hashCode() este suma codurilor hash ale elementelor, deci două mulțimi egale au același cod. Așa poți folosi mulțimi ca elemente în alte mulțimi sau ca chei într-un map.
Parametri
| Parametru | Descriere |
|---|---|
o |
Obiectul cu care se compară. |
Ce returnează
equals: boolean. hashCode: int.
Exemple
Exemplul 1: Ordinea și implementarea nu contează
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Set<String> a = new LinkedHashSet<>(List.of("Iași", "Cluj", "Arad"));
Set<String> b = new TreeSet<>(List.of("Arad", "Iași", "Cluj"));
Set<String> c = new HashSet<>(List.of("Iași", "Cluj"));
System.out.println("a = b: " + a.equals(b));
System.out.println("a = c: " + a.equals(c));
System.out.println("hash egal: " + (a.hashCode() == b.hashCode()));
System.out.println("mulțime = listă: " + b.equals(List.of("Arad", "Cluj", "Iași")));
}
}
Rezultat
a = b: true
a = c: false
hash egal: true
mulțime = listă: false
Exemplul 2: Grupuri cu aceiași membri
Mulțimile egale sunt considerate același element într-un HashSet de mulțimi.
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
List<Set<String>> echipe = List.of(
Set.of("Ana", "Radu"), Set.of("Radu", "Ana"), Set.of("Ana", "Elena"));
Set<Set<String>> distincte = new HashSet<>(echipe);
System.out.println("Echipe propuse: " + echipe.size());
System.out.println("Echipe diferite: " + distincte.size());
}
}
Rezultat
Echipe propuse: 3
Echipe diferite: 2
Greșeli frecvente
- Compari mulțimi cu
==. Operatorul verifică dacă e același obiect, nu dacă au aceleași elemente. - Compari o mulțime cu o listă și aștepți
true. Transformă una în tipul celeilalte:set.equals(new HashSet<>(lista)).
Comenzi înrudite
Set: Interfața pentru mulțimi: colecții fără duplicate, în care întrebi rapid dacă un element există.List.equals: Două liste sunt egale dacă au aceleași elemente în aceeași ordine, indiferent de clasa lor; hashCode urmează aceeași regulă.Map.equals: Două map-uri sunt egale dacă au exact aceleași perechi cheie → valoare, indiferent de ordine sau de implementare.HashSet: Mulțimea cea mai rapidă: add, remove și contains în timp aproape constant, dar fără o ordine garantată a elementelor.