Ce face HashSet
HashSet are aceleași operații ca un set obișnuit (add, contains, remove, union), dar nu ține minte ordinea inserării. Când îl parcurgi, ordinea este nedefinită.
Este alegerea potrivită pentru seturi mari folosite doar ca „listă de verificat”. Pentru afișare, sortează elementele (toList()..sort()) sau folosește SplayTreeSet.
Parametri
| Parametru | Descriere |
|---|---|
equals / hashCode / isValidKey |
Opțional: regula de egalitate a elementelor. |
elements |
Pentru HashSet.of: elementele copiate. |
Ce returnează
Un HashSet gol sau cu elementele date.
Exemple
Exemplul 1: Numere de înmatriculare verificate
import 'dart:collection';
void main() {
final autorizate = HashSet.of(['IS-01-ABC', 'CJ-22-XYZ', 'B-100-DEX']);
for (final nr in ['CJ-22-XYZ', 'BV-07-QQQ']) {
print('$nr: ${autorizate.contains(nr) ? 'intră' : 'acces refuzat'}');
}
}
Rezultat
CJ-22-XYZ: intră
BV-07-QQQ: acces refuzat
Exemplul 2: Afișare deterministă prin sortare
import 'dart:collection';
void main() {
final cuvinte = HashSet<String>()..addAll('mere pere mere prune pere caise'.split(' '));
print('Unice: ${cuvinte.length}');
print((cuvinte.toList()..sort()).join(', '));
}
Rezultat
Unice: 4
caise, mere, pere, prune
Greșeli frecvente
- Scrii teste sau afișări care depind de ordinea dintr-un
HashSet. Pot trece azi și pica mâine; sortează mai întâi.
Comenzi înrudite
Set: Colecție fără elemente duplicate: fiecare valoare apare o singură dată, iar căutarea este rapidă.LinkedHashSet: Set care păstrează ordinea inserării; este tipul implicit al seturilor scrise cu acolade.SplayTreeSet: Set care ține elementele mereu sortate și fără duplicate.HashMap: Map bazat pe tabel hash, fără ordine garantată a cheilor; puțin mai ușor decât LinkedHashMap.