Ce face SplayTreeMap
SplayTreeMap păstrează cheile într-un arbore sortat. Oricând îl parcurgi, cheile vin în ordine, fără să mai sortezi tu. Căutarea, adăugarea și ștergerea durează puțin mai mult decât la un map hash, dar ordinea este mereu corectă.
Fără funcție de comparare, cheile trebuie să fie Comparable (numere, texte, DateTime). Cu o funcție compare proprie poți sorta descrescător sau după alt criteriu.
Are în plus metode care se bazează pe ordine: firstKey, lastKey, firstKeyAfter, lastKeyBefore.
Parametri
| Parametru | Descriere |
|---|---|
compare |
Opțional: compară două chei (negativ, zero sau pozitiv). |
isValidKey |
Opțional: ce obiecte pot fi căutate ca chei. |
Ce returnează
Un map sortat după chei.
Exemple
Exemplul 1: Programul zilei, sortat după oră
import 'dart:collection';
void main() {
final program = SplayTreeMap<String, String>();
program['14:00'] = 'Laborator Dart';
program['08:30'] = 'Matematică';
program['10:00'] = 'Fizică';
program['12:15'] = 'Pauză de masă';
print(program);
program.forEach((ora, activitate) => print('$ora $activitate'));
}
Rezultat
{08:30: Matematică, 10:00: Fizică, 12:15: Pauză de masă, 14:00: Laborator Dart}
08:30 Matematică
10:00 Fizică
12:15 Pauză de masă
14:00 Laborator Dart
Exemplul 2: Ordine descrescătoare cu compare
import 'dart:collection';
void main() {
final puncte = {150: 'Ana', 320: 'Mihai', 275: 'Ioana'};
final clasament = SplayTreeMap<int, String>.of(puncte, (a, b) => b.compareTo(a));
var loc = 1;
clasament.forEach((p, nume) => print('${loc++}. $nume - $p puncte'));
}
Rezultat
1. Mihai - 320 puncte
2. Ioana - 275 puncte
3. Ana - 150 puncte
Greșeli frecvente
- Folosești chei care nu sunt
Comparable(de exemplu obiecte ale unei clase proprii) fără funcțiecompare. Apare o eroare de tip la prima adăugare. - Te aștepți ca textele cu diacritice să fie sortate ca în dicționar. Compararea implicită este după codurile Unicode:
Șvine dupăZ.
Comenzi înrudite
SplayTreeMap.firstKey: firstKey returnează cea mai mică cheie a unui SplayTreeMap, iar lastKey cea mai mare, sau null dacă e gol.SplayTreeMap.firstKeyAfter: firstKeyAfter dă cea mai mică cheie mai mare decât cea dată; lastKeyBefore dă cea mai mare cheie mai mică.SplayTreeSet: Set care ține elementele mereu sortate și fără duplicate.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.