Set.removeAll în Dart

Set: mulțimi Dart 2.0

removeAll șterge din set toate elementele date; retainAll păstrează doar elementele care apar în colecția dată.

Sintaxă
void removeAll(Iterable<Object?> elements)
void retainAll(Iterable<Object?> elements)

Ce face Set.removeAll

removeAll(colectie) scoate din set fiecare element care apare în colecție. Elementele care nu sunt în set sunt ignorate.

retainAll(colectie) face invers: păstrează doar elementele care apar și în colecție, restul le șterge. Ambele modifică set-ul pe loc; variantele care dau un set nou sunt difference și intersection.

Parametri

Parametru Descriere
elements Elementele de șters, respectiv de păstrat.

Ce returnează

Nimic (void).

Exemple

Exemplul 1: Elevi care nu au predat tema

void main() {
  final clasa = {'Ana', 'Mihai', 'Ioana', 'Radu', 'Elena'};
  final auPredat = ['Ana', 'Radu', 'Elena', 'Vlad'];
  final restanti = Set.of(clasa)..removeAll(auPredat);
  print('Restanți: $restanti');
}

Rezultat

Restanți: {Mihai, Ioana}

Exemplul 2: Doar produsele aflate în stoc

void main() {
  final cos = {'mere', 'banane', 'kiwi', 'pere'};
  final inStoc = ['pere', 'mere', 'prune'];
  cos.retainAll(inStoc);
  print('Se pot livra: $cos');
}

Rezultat

Se pot livra: {mere, pere}

Greșeli frecvente

  • Te aștepți ca removeAll să returneze set-ul rezultat. Returnează void; dacă vrei un set nou, folosește a.difference(b).

Comenzi înrudite

  • Set.remove: Scoate un element din set și returnează true dacă elementul exista.
  • Set.union: Operațiile cu mulțimi: reuniunea, intersecția și diferența a două seturi, fiecare ca set nou.
  • List.removeWhere: removeWhere șterge toate elementele care trec testul; retainWhere le păstrează doar pe ele.