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.