MapEntry în Dart

O pereche cheie–valoare: ce primești din map.entries și ce returnezi din Map.map.

Sintaxă
final class MapEntry<K, V>

const MapEntry(K key, V value)
final K key
final V value

Ce face MapEntry

MapEntry ține o cheie (key) și o valoare (value). Ambele câmpuri sunt final: o pereche nu se modifică după creare; ca să schimbi valoarea din map, scrii în map, nu în pereche.

Îl întâlnești în map.entries, Map.fromEntries, addEntries și Map.map. Din Dart 3 poți despacheta o pereche cu un pattern: final MapEntry(:key, :value) = e;.

Parametri

Parametru Descriere
key Cheia perechii.
value Valoarea perechii.

Ce returnează

Un obiect nemodificabil cu câmpurile key și value; toString() dă MapEntry(cheie: valoare).

Exemple

Exemplul 1: Crearea și citirea unei perechi

void main() {
  const pereche = MapEntry('Iași', 271692);
  print(pereche);
  print('cheie: ${pereche.key}, valoare: ${pereche.value}');

  final MapEntry(:key, :value) = pereche;
  print('$key are $value locuitori');
}

Rezultat

MapEntry(Iași: 271692)
cheie: Iași, valoare: 271692
Iași are 271692 locuitori

Exemplul 2: Cea mai mare valoare dintr-un map

reduce pe entries păstrează perechea cu valoarea maximă, deci afli și cheia ei.

void main() {
  final vanzari = {'Ana': 3200, 'Mihai': 4100, 'Ioana': 3900};
  final maxim = vanzari.entries.reduce((a, b) => a.value >= b.value ? a : b);
  print('Cel mai bun vânzător: ${maxim.key} (${maxim.value} lei)');
}

Rezultat

Cel mai bun vânzător: Mihai (4100 lei)

Greșeli frecvente

  • Încerci e.value = 5 în timp ce parcurgi entries. Câmpurile sunt final; scrie map[e.key] = 5 (după buclă sau cu updateAll).

Comenzi înrudite

  • Map.keys: keys, values și entries dau cheile, valorile sau perechile unui map, ca Iterable, în ordinea din map.
  • Map.fromEntries: Construiește un map dintr-o succesiune de perechi MapEntry, de exemplu entries filtrate sau sortate.
  • Map.map: Creează un map nou transformând fiecare pereche într-o pereche nouă, cu alte chei sau alte valori.
  • Map.addAll: addAll copiază toate perechile din alt map; addEntries adaugă perechi MapEntry dintr-un Iterable.
  • records: Grupuri de valori anonime și imutabile, de forma (a, b) sau (nume: a), ideale pentru a întoarce mai multe valori.