Junior
Kas yra HashSet C#-je?
sobes.tech AI
Atsakymas iš AI
HashSet<T> yra neįprasta unikalių elementų kolekcija. Ji pagrįsta maišos lentelės technologija ir užtikrina greitas operacijas elementų pridėjimui, pašalinimui ir buvimo patikrinimui (vidutiniškai pastoviu laiku, O(1)).
Pagrindinės HashSet<T> savybės:
- Unikalumas: negali turėti dublių. Bandant pridėti esantį elementą, operacija yra ignoruojama.
- Nepriklausomumas nuo tvarkos: elementai nėra saugomi jokiu konkrečiu būdu. Peržiūros tvarka gali skirtis nuo pridėjimo tvarkos.
- Našumas: naudodama maišos funkciją, paieškos, pridėjimo ir pašalinimo operacijos vidutiniškai turi sudėtingumą O(1). Blogiausiu atveju (kai maišos funkcija bloga arba įvyksta kolizijos) našumas gali sumažėti.
- Daugiafunkcinės operacijos: palaiko įvairias operacijas, tokias kaip sujungimas (
UnionWith), sankirta (IntersectWith), skirtumas (ExceptWith), subkategorijos ar superkategorijos patikrinimas (IsSubsetOf,IsSupersetOf).
Pavyzdys:
// HashSet sukūrimas
HashSet<string> vaisiai = new HashSet<string>();
// Elementų pridėjimas
vaisiai.Add("obuolys");
vaisiai.Add("bananas");
vaisiai.Add("apelsinas");
vaisiai.Add("obuolys"); // bus ignoruojama, nes "obuolys" jau yra
// Elemento buvimo patikrinimas
bool turiBanana = vaisiai.Contains("bananas"); // true
bool turiGrapes = vaisiai.Contains("vynuogės"); // false
// Elemento pašalinimas
vaisiai.Remove("apelsinas");
// Elementų peržiūra
foreach (string vaisius in vaisiai)
{
// išvedimas: obuolys, bananas (tvarka gali skirtis)
Console.WriteLine(vaisius);
}
// Kolekcijos dydis
int kiekis = vaisiai.Count; // 2
HashSet<T> įgyvendina ICollection<T>, IEnumerable<T> ir ISet<T> sąsajas, leidžiančias naudoti jį įvairiuose kolekcijų scenarijuose ir vykdyti specifinius rinkinių operacijas.