Junior
C# da HashSet nima?
sobes.tech AI
AIdan javob
HashSet<T> bu tartibga solinmagan, noyob elementlardan iborat to'plamadir. U hash-jadvalga asoslangan bo'lib, elementlarni qo'shish, o'chirish va mavjudligini tekshirish operatsiyalarini tez bajaradi (o'rtacha holda, O(1) vaqt ichida).
HashSet<T> ning asosiy xususiyatlari:
- Noyoblik: Takroriy elementlarni saqlay olmaydi. Mavjud elementni qo'shishga urinish operatsiya e'tiborga olinmaydi.
- Tartibsizlik: Elementlar ma'lum bir tartibda saqlanmaydi. Aylanma tartibi qo'shilish tartibidan farq qilishi mumkin.
- Ishlash tezligi: Hashingdan foydalanish bilan, qidirish, qo'shish va o'chirish operatsiyalari o'rtacha O(1) murakkablikka ega. Yomon hash funktsiyasi yoki koliziyalar bo'lsa, ishlash tezligi pasayishi mumkin.
- Ko'p operatsiyalar: Birlashtirish (
UnionWith), kesish (IntersectWith), farq (ExceptWith), kichik yoki katta to'plam tekshiruvi (IsSubsetOf,IsSupersetOf) kabi operatsiyalarni qo'llab-quvvatlaydi.
Foydalanish misoli:
// HashSet yaratish
HashSet<string> fruits = new HashSet<string>();
// Elementlar qo'shish
fruits.Add("olma");
fruits.Add("banan");
fruits.Add("apelsin");
fruits.Add("olma"); // E'tiborga olinmaydi, chunki "olma" allaqachon mavjud
// Element mavjudligini tekshirish
bool hasBanana = fruits.Contains("banan"); // true
bool hasGrape = fruits.Contains("uzum"); // false
// Elementni o'chirish
fruits.Remove("apelsin");
// Elementlar bo'yicha aylanma
foreach (string fruit in fruits)
{
// Natija: olma, banan (tartib o'zgarishi mumkin)
Console.WriteLine(fruit);
}
// To'plam o'lchami
int count = fruits.Count; // 2
HashSet<T> ICollection<T>, IEnumerable<T> va ISet<T> interfeyslarini amalga oshiradi, bu uni turli to'plam ssenariylarida ishlatish va maxsus to'plam operatsiyalarini bajarish imkonini beradi.