Set.union în Dart

Set: mulțimi Dart 2.0

Operațiile cu mulțimi: reuniunea, intersecția și diferența a două seturi, fiecare ca set nou.

Sintaxă
Set<E> union(Set<E> other)
Set<E> intersection(Set<Object?> other)
Set<E> difference(Set<Object?> other)

Ce face Set.union

a.union(b) dă toate elementele din a sau din b. a.intersection(b) dă elementele aflate în ambele. a.difference(b) dă elementele din a care nu sunt în b.

Toate trei returnează un set nou; cele două seturi inițiale nu se schimbă. Ordinea urmează ordinea din a (iar la union, apoi elementele noi din b).

Parametri

Parametru Descriere
other Al doilea set.

Ce returnează

Un Set<E> nou.

Exemple

Exemplul 1: Cursuri opționale

void main() {
  final ana = {'robotică', 'șah', 'teatru'};
  final mihai = {'șah', 'fotbal', 'robotică'};
  print('Toate cursurile: ${ana.union(mihai)}');
  print('Împreună la: ${ana.intersection(mihai)}');
  print('Doar Ana: ${ana.difference(mihai)}');
  print('Doar Mihai: ${mihai.difference(ana)}');
}

Rezultat

Toate cursurile: {robotică, șah, teatru, fotbal}
Împreună la: {robotică, șah}
Doar Ana: {teatru}
Doar Mihai: {fotbal}

Exemplul 2: Ce s-a schimbat între două liste

void main() {
  final ieri = {'mere', 'pâine', 'lapte'};
  final azi = {'pâine', 'lapte', 'ouă', 'cafea'};
  print('Adăugate: ${azi.difference(ieri)}');
  print('Scoase: ${ieri.difference(azi)}');
  print('Neschimbate: ${ieri.intersection(azi)}');
}

Rezultat

Adăugate: {ouă, cafea}
Scoase: {mere}
Neschimbate: {pâine, lapte}

Greșeli frecvente

  • Aștepți ca a.union(b) să modifice a. Returnează un set nou; dacă vrei să modifici pe loc, folosește a.addAll(b).
  • Chemi union cu o listă. Parametrul trebuie să fie un Set; scrie a.union(lista.toSet()).

Comenzi înrudite

  • Set.removeAll: removeAll șterge din set toate elementele date; retainAll păstrează doar elementele care apar în colecția dată.
  • Set.add: add pune un element în set și spune dacă a fost nou; addAll adaugă toate elementele unei colecții.
  • Set.contains: contains verifică rapid dacă un element este în set; containsAll verifică dacă sunt toate elementele unei colecții.