Sobes.tech
Junior

C# da qanday kolleksiyalar mavjud?

sobes.tech AI

AIdan javob

C# ma'lumotlarni saqlash va boshqarish uchun turli to'plam turlarini taklif qiladi, ular turli nomlar bo'sh joylarida joylashgan (asosan System.Collections, System.Collections.Generic, System.Collections.Concurrent, System.Collections.Immutable). Ularni bir nechta asosiy belgilarga ko'ra tasniflash mumkin:

  1. Saqlanadigan ma'lumotlar turiga ko'ra:

    • Tipsiz (Untyped): object turidagi obyektlarni saqlaydi (System.Collections). Turlarni konvertatsiya qilishni talab qiladi va kamroq samarali bo'lishi mumkin.
    • Tipli (Generic): Aniq bir turdagi obyektlarni saqlaydi (System.Collections.Generic). Turlar xavfsizligini ta'minlaydi va yaxshiroq ishlash imkonini beradi.
  2. Ma'lumotlar tuzilmasiga ko'ra:

    • Ro'yxatlar (Lists): Ketma-ket kolleksiyalar, elementlarga indeks orqali kirish.
      • ArrayList (tipsiz)
      • List<T> (tipli)
      • LinkedList<T> (tipli ikki tomonlama bog'langan ro'yxat)
    • Massivlar (Arrays): Belgilangan o'lcham, indeks bilan kirish.
      • Array (asosiy sinf)
      • T[] (massivlar uchun sintaktik shakar)
    • Lug'atlar (Dictionaries): Kalit-qiymat juftliklari, kalit orqali kirish.
      • Hashtable (tipsiz)
      • Dictionary<TKey, TValue> (tipli)
      • SortedList (tipsiz, kalit bo'yicha tartiblangan)
      • SortedList<TKey, TValue> (tipli, kalit bo'yicha tartiblangan)
      • SortedDictionary<TKey, TValue> (tipli, kalit bo'yicha tartiblangan, qizil-oq daraxtdan foydalanadi)
    • To'plamlar (Sets): Unikal elementlar kolleksiyasi.
      • HashSet<T> (tipli, tartibsiz)
      • SortedSet<T> (tipli, tartiblangan)
    • Navbatlar (Queues): "Birinchi kelgan, birinchi chiqadi" tamoyiliga asoslangan kolleksiyalar.
      • Queue (tipsiz)
      • Queue<T> (tipli)
    • Stacklar (Stacks): "So'nggi kelgan, birinchi chiqadi" tamoyiliga asoslangan kolleksiyalar.
      • Stack (tipsiz)
      • Stack<T> (tipli)
  3. Ip xavfsizligi bo'yicha:

    • Ipga xavfsiz emas: Ko'pchilik standart kolleksiyalar (System.Collections, System.Collections.Generic). Ko'p ipli ishlash uchun tashqi sinxronizatsiya talab qiladi.
    • Ip xavfsiz (Concurrent): Ko'p ipli muhitda xavfsiz ishlash uchun ishlab chiqilgan (System.Collections.Concurrent).
      • ConcurrentBag<T>
      • ConcurrentDictionary<TKey, TValue>
      • ConcurrentQueue<T>
      • ConcurrentStack<T>
  4. O'zgartirish imkoniyati bo'yicha:

    • O'zgartiriladigan (Mutable): Ko'pchilik kolleksiyalar elementlarni qo'shish, o'chirish va o'zgartirishga imkon beradi.
    • O'zgarmas (Immutable): Yaratilgandan so'ng o'zgarmaslikni ta'minlaydi (System.Collections.Immutable). Har qanday o'zgartirish operatsiyasi yangi kolleksiyani qaytaradi.
      • ImmutableArray<T>
      • ImmutableList<T>
      • ImmutableDictionary<TKey, TValue>
      • ImmutableHashSet<T>
      • ImmutableSortedSet<T>
      • ImmutableQueue<T>
      • ImmutableStack<T>

Maxsus kolleksiya turini tanlash vazifaning talablariga bog'liq: ma'lumotlar turi, indeks yoki kalit bo'yicha kirish ehtiyoji, elementlarning yagona bo'lishi talablari, saqlash tartibi, ishlash tezligi, ip xavfsizligi va o'zgartirish imkoniyati. Hozirgi kunda, System.Collections.Generic nom space ichidagi tiplangan kolleksiyalar eng ko'p ishlatiladi.