Set.add în Java

Adaugă un element în mulțime doar dacă nu există deja; returnează true dacă a fost adăugat. addAll face reuniunea.

Sintaxă
boolean add(E e)
boolean addAll(Collection<? extends E> c)

Ce face Set.add

set.add(x) pune x în mulțime și returnează true. Dacă un element egal există deja, mulțimea rămâne la fel și metoda returnează false. Rezultatul este deci și un test „a mai fost?” făcut dintr-un singur pas.

set.addAll(colectie) adaugă toate elementele noi din altă colecție: este reuniunea a două mulțimi. Returnează true dacă a intrat cel puțin un element nou.

Parametri

Parametru Descriere
e Elementul de adăugat.
c Colecția ale cărei elemente se adaugă.

Ce returnează

true dacă mulțimea s-a modificat.

Exemple

Exemplul 1: Primul vot contează

import java.util.LinkedHashSet;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Set<String> auVotat = new LinkedHashSet<>();
        String[] voturi = {"Ana", "Mihai", "Ana", "Ioana", "Mihai"};
        for (String v : voturi) {
            System.out.println(v + (auVotat.add(v) ? ": vot înregistrat" : ": a votat deja"));
        }
        System.out.println("Au votat: " + auVotat);
    }
}

Rezultat

Ana: vot înregistrat
Mihai: vot înregistrat
Ana: a votat deja
Ioana: vot înregistrat
Mihai: a votat deja
Au votat: [Ana, Mihai, Ioana]

Exemplul 2: Reuniunea a două mulțimi

import java.util.List;
import java.util.TreeSet;

public class Main {
    public static void main(String[] args) {
        TreeSet<String> grupaA = new TreeSet<>(List.of("Ana", "Radu", "Elena"));
        List<String> grupaB = List.of("Elena", "Mihai");
        TreeSet<String> toti = new TreeSet<>(grupaA);
        System.out.println("S-a schimbat: " + toti.addAll(grupaB));
        System.out.println("Reuniune: " + toti);
        System.out.println("Din nou: " + toti.addAll(grupaB));
    }
}

Rezultat

S-a schimbat: true
Reuniune: [Ana, Elena, Mihai, Radu]
Din nou: false

Greșeli frecvente

  • Te aștepți ca add să înlocuiască elementul vechi cu cel nou. Dacă există deja un element egal, cel vechi rămâne.
  • Adaugi într-un Set.of(...). Mulțimea este nemodificabilă și apare UnsupportedOperationException.

Comenzi înrudite

  • Set: Interfața pentru mulțimi: colecții fără duplicate, în care întrebi rapid dacă un element există.
  • Set.contains: contains verifică rapid dacă un element este în mulțime; containsAll verifică dacă sunt toate elementele altei colecții.
  • Set.remove: remove scoate un element; removeAll face diferența a două mulțimi, retainAll intersecția. Toate spun dacă s-a schimbat ceva.
  • Collection.addAll: Adaugă în colecție toate elementele altei colecții. Returnează true dacă s-a schimbat ceva.
  • List.add: Adaugă un element (sau toate elementele altei colecții) la sfârșitul listei ori la o poziție dată.