Junior
Mis on HashSet C#-s?
sobes.tech AI
Vastus AI-lt
HashSet<T> on mittestandardne un unikaalsete elementide kogumik. See põhineb hajutustabelil ja tagab kiirete operatsioonide, nagu elementide lisamine, eemaldamine ja olemasolu kontrollimine (keskmiselt konstantsel ajal, O(1)).
HashSet<T> peamised omadused:
- Unikaalsus: ei saa sisaldada duplikaate. Kui proovite lisada olemasolevat elementi, operatsioon ignoreeritakse.
- Mittekohustuslikkus: elemendid ei ole kindlas järjekorras. Läbivaatamise järjekord võib erineda lisamise järjekorrast.
- Jõudlus: kasutades hajutamist, otsingute, lisamiste ja eemaldamiste operatsioonide keskmine keerukus on O(1). Halvimal juhul (kui hajufunktsioon on halb või esinevad kokkupõrked) võib jõudlus langeda.
- Mitmeotstarbelised operatsioonid: toetab erinevaid operatsioone, nagu ühendamine (
UnionWith), ristumine (IntersectWith), erinevus (ExceptWith), alamhulga või ülemhulga kontroll (IsSubsetOf,IsSupersetOf).
Näide:
// HashSet loomine
HashSet<string> puuviljad = new HashSet<string>();
// Elementide lisamine
puuviljad.Add("õun");
puuviljad.Add("banaan");
puuviljad.Add("apelsin");
puuviljad.Add("õun"); // ignoreeritakse, kuna "õun" on juba olemas
// Elementide olemasolu kontroll
bool onBanaan = puuviljad.Contains("banaan"); // true
bool onViinamarjad = puuviljad.Contains("viinamarjad"); // false
// Elementi eemaldamine
puuviljad.Remove("apelsin");
// Elementide läbikäimine
foreach (string puuvili in puuviljad)
{
// väljund: õun, banaan (järjekord võib erineda)
Console.WriteLine(puuvili);
}
// Kogumi suurus
int arv = puuviljad.Count; // 2
HashSet<T> realiseerib ICollection<T>, IEnumerable<T> ja ISet<T> liidesed, mis võimaldavad seda kasutada erinevates kogumiks scenario'ides ja teostada spetsiifilisi kogude operatsioone.