Iterable.toList în Dart

toList copiază elementele într-o listă nouă; toSet le copiază într-un set nou, fără duplicate.

Sintaxă
List<E> toList({bool growable = true})
Set<E> toSet()

Ce face Iterable.toList

toList() parcurge iterable-ul și creează o listă nouă cu elementele lui. Rezultatul nu mai este leneș: poți folosi [i], add, sort. Cu growable: false obții o listă de lungime fixă.

toSet() creează un Set (un LinkedHashSet, care păstrează ordinea primei apariții) și elimină duplicatele. Ambele fac copii: modificarea copiei nu schimbă colecția inițială.

Parametri

Parametru Descriere
growable Pentru toList: false creează o listă de lungime fixă.

Ce returnează

O List sau un Set nou.

Exemple

Exemplul 1: Din iterable leneș în listă

void main() {
  final note = [8, 10, 6, 9];
  final mari = note.where((n) => n >= 8).toList();
  mari.sort();
  print(mari);
  print('primul: ${mari[0]}');

  final copie = note.toList()..add(5);
  print('original: $note, copie: $copie');
}

Rezultat

[8, 9, 10]
primul: 8
original: [8, 10, 6, 9], copie: [8, 10, 6, 9, 5]

Exemplul 2: toSet elimină duplicatele

void main() {
  final vizite = ['Iași', 'Cluj', 'Iași', 'Sibiu', 'Cluj'];
  final unice = vizite.toSet();
  print(unice);
  print('${vizite.length} vizite în ${unice.length} orașe');

  final fixa = vizite.toList(growable: false);
  try {
    fixa.add('Arad');
  } on UnsupportedError catch (e) {
    print('listă fixă: ${e.message}');
  }
}

Rezultat

{Iași, Cluj, Sibiu}
5 vizite în 3 orașe
listă fixă: Cannot add to a fixed-length list

Greșeli frecvente

  • Crezi că toList() pe o listă returnează aceeași listă. Returnează o copie nouă; modificările nu se văd în original.

Comenzi înrudite

  • Iterable.map: Transformă fiecare element cu o funcție și returnează un iterable nou, leneș, cu rezultatele.
  • List.from: Creează o listă nouă cu elementele unei colecții; of verifică tipul la compilare, from la rulare.
  • Set.from: Creează un set nou din elementele unei colecții; Set.of verifică tipul la compilare, Set.from la rulare.
  • Stream.toList: Adună toate valorile stream-ului într-o listă (sau într-un set) când stream-ul se închide.