List.asMap în Dart

List: liste Dart 2.0

Privește lista ca un Map nemodificabil de la poziție la element.

Sintaxă
Map<int, E> asMap()

Ce face List.asMap

asMap() returnează o vedere a listei ca Map<int, E>: cheile sunt pozițiile 0, 1, 2, …, iar valorile sunt elementele. Nu copiază nimic; dacă lista se schimbă, vederea vede schimbarea. Vederea nu poate fi modificată direct.

Este utilă când ai nevoie de pozițiile elementelor, de exemplu cu forEach((i, x) {...}) sau entries. În Dart 3, indexed face același lucru cu records.

Ce returnează

Un Map<int, E> nemodificabil, legat de listă.

Exemple

Exemplul 1: Poziții și elemente

void main() {
  final podium = ['Ana', 'Mihai', 'Ioana'];
  final harta = podium.asMap();
  print(harta);
  harta.forEach((i, nume) => print('Locul ${i + 1}: $nume'));
  podium[0] = 'Vlad';
  print('după schimbare: ${harta[0]}');
}

Rezultat

{0: Ana, 1: Mihai, 2: Ioana}
Locul 1: Ana
Locul 2: Mihai
Locul 3: Ioana
după schimbare: Vlad

Exemplul 2: Pozițiile notelor maxime

void main() {
  final note = [10, 8, 10, 9];
  final pozitii = note.asMap().entries.where((e) => e.value == 10).map((e) => e.key);
  print('Nota 10 la pozițiile: ${pozitii.toList()}');
}

Rezultat

Nota 10 la pozițiile: [0, 2]

Greșeli frecvente

  • Încerci lista.asMap()[5] = x: vederea nu poate fi modificată și aruncă UnsupportedError. Modifică lista.

Comenzi înrudite

  • Iterable.indexed: Perechi (poziție, element) pentru fiecare element, utile în for-in cu destructurare.
  • Map: Colecție de perechi cheie–valoare: cauți rapid o valoare după cheia ei (nume, cod, oraș).
  • List.indexOf: Găsește poziția unui element (prima sau ultima apariție) sau a primului element care trece un test; -1 dacă nu există.