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