Ce face SplayTreeSet
SplayTreeSet este un set sortat: elementele sunt unice și vin mereu în ordine crescătoare (sau în ordinea dată de compare). Are first și last rapide pentru minim și maxim.
Două elemente pentru care compare returnează 0 sunt considerate același element, deci al doilea nu se mai adaugă. Ține cont de asta când scrii o comparare după un singur câmp.
Parametri
| Parametru | Descriere |
|---|---|
compare |
Opțional: ordinea elementelor. Fără ea, elementele trebuie să fie Comparable. |
elements |
Pentru SplayTreeSet.of: elementele de pornire. |
Ce returnează
Un set sortat.
Exemple
Exemplul 1: Note unice, sortate
import 'dart:collection';
void main() {
final note = SplayTreeSet.of([9, 7, 10, 7, 9, 5]);
print(note);
print('Minim ${note.first}, maxim ${note.last}');
note.add(8);
print(note);
}
Rezultat
{5, 7, 9, 10}
Minim 5, maxim 10
{5, 7, 8, 9, 10}
Exemplul 2: Sortare după lungime, apoi alfabetic
Compararea doar după lungime ar considera „Ana” și „Ion” același element. De aceea comparăm și alfabetic când lungimile sunt egale.
import 'dart:collection';
void main() {
int compara(String a, String b) {
final dupaLungime = a.length.compareTo(b.length);
return dupaLungime != 0 ? dupaLungime : a.compareTo(b);
}
final nume = SplayTreeSet<String>(compara)..addAll(['Mihai', 'Ana', 'Ion', 'Elena', 'Bogdan']);
print(nume);
final doarLungime = SplayTreeSet<String>((a, b) => a.length.compareTo(b.length))
..addAll(['Ana', 'Ion', 'Mihai']);
print(doarLungime);
}
Rezultat
{Ana, Ion, Elena, Mihai, Bogdan}
{Ana, Mihai}
Greșeli frecvente
- Scrii un
comparecare returnează 0 pentru elemente diferite. Set-ul le consideră duplicate și păstrează doar primul.
Comenzi înrudite
SplayTreeMap: Map care ține cheile mereu sortate; parcurgerea și print dau cheile în ordine crescătoare.Set: Colecție fără elemente duplicate: fiecare valoare apare o singură dată, iar căutarea este rapidă.HashSet: Set bazat pe tabel hash, fără ordine garantată a elementelor; potrivit doar pentru verificări de apartenență.List.sort: Sortează lista pe loc, crescător sau după o funcție de comparare.