Junior
რა არის HashSet C#-ში?
sobes.tech AI
პასუხი AI-სგან
HashSet<T> — ეს არის არათანაზომადი უნიკალური ელემენტების კოლექცია. იგი დაფუძნებულია ჰეშ-ტაბლაზე და უზრუნველყოფს სწრაფ ოპერაციებს ელემენტების დამატების, წაშლის და არსებობის შემოწმების (საშუალოდ კონსტანტული დრო, O(1)).
HashSet<T>-ის ძირითადი მახასიათებლები:
- უნიკალურობა: არ შეუძლია შეიცავდეს დუბლიკატებს. როდესაც ცდილობთ არსებული ელემენტის დამატებას, ოპერაცია იგნორირებულია.
- არათანაზომადობა: ელემენტები არ ინახება რომელიმე განსაზღვრულ წესზე. სიის გადათვლის წესში ცვლილებები შეიძლება იყოს.
- მოწოდება: ჰეშირების გამოყენებით, ძიების, დამატების და წაშლის ოპერაციები საშუალოდ აქვს სირთულე O(1). უარეს შემთხვევაში (როდესაც ჰეშ-ფუნქცია ცუდია ან კოლიზიები ხდება) შესრულება შეიძლება შემცირდეს.
- მრავალმხრივი ოპერაციები: მხარს უჭერს მრავალ ოპერაციას, როგორიცაა გაერთიანება (
UnionWith), გადაკვეთა (IntersectWith), განსხვავება (ExceptWith), ქვესეტობის ან ზედსეტობის შემოწმება (IsSubsetOf,IsSupersetOf).
გამოყენების მაგალითი:
// HashSet-ის შექმნა
HashSet<string> ხილი = new HashSet<string>();
// ელემენტების დამატება
ხილი.Add("ვაშლი");
ხილი.Add("ბანანი");
ხილი.Add("ნარინჯი");
ხილი.Add("ვაშლი"); // იგნორირებულია, რადგან "ვაშლი" უკვე არსებობს
// ელემენტის არსებობის შემოწმება
bool აქვსბანანი = ხილი.Contains("ბანანი"); // true
bool აქვსგრეიპი = ხილი.Contains("გრეიპი"); // false
// ელემენტის წაშლა
ხილი.Remove("ნარინჯი");
// ელემენტების გადათვლა
foreach (string ხილი in ხილი)
{
// გამოტანა: ვაშლი, ბანანი (შესაძლებელია წესის ცვლილება)
Console.WriteLine(ხილი);
}
// კოლექციის ზომა
int რაოდენობა = ხილი.Count; // 2
HashSet<T> ახდენს ICollection<T>, IEnumerable<T> და ISet<T> ინტერფეისების რეალიზაციას, რაც საშუალებას აძლევს გამოიყენოს იგი სხვადასხვა კოლექციის სცენარებში და განახორციელოს უნიკალური ოპერაციები.