Sobes.tech
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.