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.