Sobes.tech
Junior

Kas ir HashSet C#?

sobes.tech AI

Atbilde no AI

HashSet<T> ir neordinēta unikālu elementu kolekcija. Tā balstīta uz haštabulu un nodrošina ātras operācijas elementu pievienošanai, dzēšanai un pārbaudei (vidēji konstants laiks, O(1)).

Galvenās HashSet<T> īpašības:

  • Unikalitāte: nevar saturēt dublikātus. Mēģinot pievienot esošu elementu, operācija tiek ignorēta.
  • Neordinētība: elementi nav glabāti noteiktā secībā. Pārbaudes secība var atšķirties no pievienošanas secības.
  • Veiktspēja: izmantojot hašēšanu, meklēšanas, pievienošanas un dzēšanas operācijas vidēji ir O(1) sarežģītībā. Sliktākajā gadījumā (ja hašēšanas funkcija ir slikta vai ir kolīzijas) veiktspēja var samazināties.
  • Daudzfunkcionālas operācijas: atbalsta dažādas operācijas, piemēram, apvienošanu (UnionWith), šķērsgriezumu (IntersectWith), atšķirību (ExceptWith), apakškopu vai pārākuma pārbaudi (IsSubsetOf, IsSupersetOf).

Piemērs:

// HashSet izveide
HashSet<string> augļi = new HashSet<string>();

// Elementu pievienošana
augļi.Add("ābols");
augļi.Add("banāns");
augļi.Add("apelsīns");
augļi.Add("ābols"); // tiks ignorēts, jo "ābols" jau ir

// Elementa esamības pārbaude
bool irBanāns = augļi.Contains("banāns"); // true
bool irVīnogas = augļi.Contains("vīnogas"); // false

// Elementa dzēšana
augļi.Remove("apelsīns");

// Elementu pārskatīšana
foreach (string auglis in augļi)
{
    // izvade: ābols, banāns (var mainīties secība)
    Console.WriteLine(auglis);
}

// Kolekcijas lielums
int skaits = augļi.Count; // 2

HashSet<T> realizē ICollection<T>, IEnumerable<T> un ISet<T> saskarnes, kas ļauj to izmantot dažādos kolekciju scenārijos un veikt specifiskas kopu operācijas.