Ce face LinkedHashSet
LinkedHashSet are căutare rapidă prin cod hash și ține minte ordinea în care au fost adăugate elementele. Un literal {'a', 'b'} sau Set() creează un astfel de set.
Îl creezi explicit pentru o regulă proprie de egalitate (cu equals și hashCode) sau pentru egalitate după identitate (LinkedHashSet.identity()). Adăugarea unui element care există deja nu îi schimbă poziția.
Parametri
| Parametru | Descriere |
|---|---|
equals |
Opțional: când sunt egale două elemente. |
hashCode |
Opțional: codul hash al unui element, compatibil cu equals. |
isValidKey |
Opțional: ce obiecte pot fi căutate. |
Ce returnează
Un set gol care păstrează ordinea inserării.
Exemple
Exemplul 1: Etichete unice, în ordinea apariției
import 'dart:collection';
void main() {
final etichete = LinkedHashSet<String>(
equals: (a, b) => a.toLowerCase() == b.toLowerCase(),
hashCode: (e) => e.toLowerCase().hashCode,
);
etichete.addAll(['Dart', 'flutter', 'DART', 'Mobil', 'Flutter']);
print(etichete);
}
Rezultat
{Dart, flutter, Mobil}
Exemplul 2: Adăugarea din nou nu schimbă ordinea
import 'dart:collection';
void main() {
final vizitate = {'Iași', 'Cluj', 'Sibiu'};
vizitate.add('Iași');
print(vizitate);
print('Este LinkedHashSet: ${vizitate is LinkedHashSet}');
}
Rezultat
{Iași, Cluj, Sibiu}
Este LinkedHashSet: true
Greșeli frecvente
- Presupui că un
HashSetpăstrează ordinea caLinkedHashSet. Nu o păstrează; dacă ordinea contează, folosește set-ul implicit.
Comenzi înrudite
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ță.SplayTreeSet: Set care ține elementele mereu sortate și fără duplicate.LinkedHashMap: Map care păstrează ordinea inserării cheilor; este tipul implicit al map-urilor scrise cu acolade.Set.lookup: Returnează elementul din set egal cu valoarea dată (obiectul păstrat în set), sau null dacă nu există.