Ce face Set
Un Set<E> ține valori unice: dacă adaugi a doua oară aceeași valoare, mulțimea rămâne neschimbată. Creezi un set cu acolade și elemente: {'Iași', 'Cluj'}. Atenție: {} singur este un map gol; pentru un set gol scrie <String>{}.
Set-ul creat cu acolade sau cu Set() este un LinkedHashSet: păstrează ordinea în care au fost adăugate elementele. contains pe un set este mult mai rapid decât pe o listă mare.
Pentru că Set este un Iterable, are toate metodele obișnuite: map, where, length, join, toList.
Ce returnează
Set() returnează un set gol care păstrează ordinea inserării.
Exemple
Exemplul 1: Eliminarea duplicatelor
void main() {
final vizitate = ['Iași', 'Cluj', 'Iași', 'Sibiu', 'Cluj', 'Iași'];
final unice = vizitate.toSet();
print(unice);
print('Orașe diferite: ${unice.length}');
final etichete = {'dart', 'flutter'};
print(etichete.add('dart'));
print(etichete);
}
Rezultat
{Iași, Cluj, Sibiu}
Orașe diferite: 3
false
{dart, flutter}
Exemplul 2: Set gol și verificare rapidă
Pentru un set gol trebuie scris tipul: <String>{}. Fără tip, {} este un map, cum arată runtimeType pe ultimul rând.
void main() {
final prezenti = <String>{};
prezenti.add('Ana');
prezenti.add('Mihai');
prezenti.add('Ana');
for (final elev in ['Ana', 'Ioana']) {
print('$elev prezent: ${prezenti.contains(elev)}');
}
print(prezenti);
final gol = {};
print('{} are tipul ${gol.runtimeType}');
}
Rezultat
Ana prezent: true
Ioana prezent: false
{Ana, Mihai}
{} are tipul _Map<dynamic, dynamic>
Greșeli frecvente
- Scrii
final s = {};pentru un set gol și primești unMap. Scrie<int>{}sauSet<int>(). - Încerci
s[0]. Un set nu are poziții; foloseștefirst,elementAtsau transformă-l în listă.
Comenzi înrudite
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.Set.union: Operațiile cu mulțimi: reuniunea, intersecția și diferența a două seturi, fiecare ca set nou.LinkedHashSet: Set care păstrează ordinea inserării; este tipul implicit al seturilor scrise cu acolade.HashSet: Set bazat pe tabel hash, fără ordine garantată a elementelor; potrivit doar pentru verificări de apartenență.SplayTreeSet: Set care ține elementele mereu sortate și fără duplicate.