Ce face LinkedHashMap
LinkedHashMap găsește cheile rapid, prin cod hash, și în plus ține minte ordinea în care au fost adăugate. {'a': 1} și Map() creează exact un astfel de map.
Îl creezi explicit când vrei o regulă proprie de egalitate pentru chei, prin equals și hashCode (de exemplu, chei text fără să conteze literele mari), sau un map după identitate, cu LinkedHashMap.identity().
Schimbarea valorii unei chei existente nu îi schimbă locul în ordine. Ca să muți o cheie la final, o ștergi și o adaugi din nou.
Parametri
| Parametru | Descriere |
|---|---|
equals |
Opțional: când sunt două chei egale. |
hashCode |
Opțional: codul hash al unei chei, compatibil cu equals. |
isValidKey |
Opțional: ce obiecte pot fi căutate ca chei (folosit cu equals propriu). |
Ce returnează
Un map gol care păstrează ordinea inserării.
Exemple
Exemplul 1: Chei fără să conteze literele mari
import 'dart:collection';
void main() {
final stoc = LinkedHashMap<String, int>(
equals: (a, b) => a.toLowerCase() == b.toLowerCase(),
hashCode: (k) => k.toLowerCase().hashCode,
);
stoc['Mere'] = 10;
stoc['MERE'] = 25;
stoc['pere'] = 7;
print(stoc);
print(stoc['mere']);
}
Rezultat
{Mere: 25, pere: 7}
25
Exemplul 2: Ordinea la actualizare și la reinserare
import 'dart:collection';
void main() {
final ultimeleVizite = {'Ana': 1, 'Mihai': 2, 'Ioana': 3};
ultimeleVizite['Ana'] = 4;
print(ultimeleVizite.keys);
final v = ultimeleVizite.remove('Mihai')!;
ultimeleVizite['Mihai'] = v + 3;
print(ultimeleVizite.keys);
print('Este LinkedHashMap: ${ultimeleVizite is LinkedHashMap}');
}
Rezultat
(Ana, Mihai, Ioana)
(Ana, Ioana, Mihai)
Este LinkedHashMap: true
Greșeli frecvente
- Dai doar
equals, fărăhashCodepotrivit. Două chei „egale” trebuie să aibă același cod hash, altfel map-ul nu le găsește.
Comenzi înrudite
Map: Colecție de perechi cheie–valoare: cauți rapid o valoare după cheia ei (nume, cod, oraș).HashMap: Map bazat pe tabel hash, fără ordine garantată a cheilor; puțin mai ușor decât LinkedHashMap.SplayTreeMap: Map care ține cheile mereu sortate; parcurgerea și print dau cheile în ordine crescătoare.LinkedHashSet: Set care păstrează ordinea inserării; este tipul implicit al seturilor scrise cu acolade.