Ce face Set.remove
remove(x) scoate elementul x și returnează true dacă exista. removeAll(c) scoate toate elementele care apar în c: rezultatul este diferența A − B. retainAll(c) păstrează doar elementele care apar și în c: rezultatul este intersecția A ∩ B.
Toate trei modifică mulțimea pe care sunt apelate. Când vrei să păstrezi originalul, fă mai întâi o copie: new TreeSet<>(a).
Parametri
| Parametru | Descriere |
|---|---|
o |
Elementul de scos. |
c |
Colecția folosită pentru diferență sau intersecție. |
Ce returnează
true dacă mulțimea s-a modificat.
Exemple
Exemplul 1: Intersecție și diferență între două clase
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Set<String> engleza = new TreeSet<>(List.of("Ana", "Radu", "Elena", "Mihai"));
Set<String> germana = new TreeSet<>(List.of("Elena", "Ioana", "Radu"));
Set<String> ambele = new TreeSet<>(engleza);
ambele.retainAll(germana);
Set<String> doarEngleza = new TreeSet<>(engleza);
doarEngleza.removeAll(germana);
System.out.println("Ambele limbi: " + ambele);
System.out.println("Doar engleză: " + doarEngleza);
System.out.println("Original neschimbat: " + engleza);
}
}
Rezultat
Ambele limbi: [Elena, Radu]
Doar engleză: [Ana, Mihai]
Original neschimbat: [Ana, Elena, Mihai, Radu]
Exemplul 2: remove returnează dacă a găsit elementul
import java.util.List;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<String> abonati = new TreeSet<>(List.of("ana@exemplu.ro", "radu@exemplu.ro"));
System.out.println(abonati.remove("radu@exemplu.ro") + " " + abonati);
System.out.println(abonati.remove("radu@exemplu.ro") + " " + abonati);
System.out.println(abonati.removeAll(List.of("x@exemplu.ro")) + " (nimic comun)");
}
}
Rezultat
true [ana@exemplu.ro]
false [ana@exemplu.ro]
false (nimic comun)
Greșeli frecvente
- Aplici
retainAll/removeAlldirect pe mulțimea originală și apoi ai nevoie de ea. Lucrează pe o copie. - Pe un
Set<Integer>, crezi căremove(0)scoate „primul element”. Scoate valoarea 0, pentru că o mulțime nu are poziții.
Comenzi înrudite
Set: Interfața pentru mulțimi: colecții fără duplicate, în care întrebi rapid dacă un element există.Set.add: Adaugă un element în mulțime doar dacă nu există deja; returnează true dacă a fost adăugat. addAll face reuniunea.Collection.retainAll: retainAll păstrează doar elementele care apar și în altă colecție; containsAll verifică dacă le conține pe toate.List.removeAll: removeAll șterge toate elementele care apar în altă colecție; retainAll le păstrează doar pe acestea.Collection.removeIf: Șterge din colecție toate elementele pentru care condiția dată este adevărată. Returnează true dacă s-a șters ceva.