Sobes.tech
Junior

Millised on C#-s olemasolevad kogumite tüübid?

sobes.tech AI

Vastus AI-lt

C# pakub palju kollektsioonitüüpe andmete salvestamiseks ja haldamiseks, mis paiknevad erinevates nimelahendustes (peamiselt System.Collections, System.Collections.Generic, System.Collections.Concurrent, System.Collections.Immutable). Neid saab klassifitseerida mitme peamise tunnuse järgi:

  1. Salvestatud andmete tüübi järgi:

    • Mitte-tüübil (Untyped): Salvestavad objekte tüübis object (System.Collections). Nõuavad tüüpide teisendamist ja võivad olla vähem tõhusad.
    • Tüübilised (Generic): Salvestavad kindla tüübi objekte (System.Collections.Generic). Tagavad tüübi turvalisuse ja parema jõudluse.
  2. Andmestruktuuri järgi:

    • Nimekirjad (Lists): Järjendkolekcioonid, juurdepääs elementidele indeksiga.
      • ArrayList (mitte-tüübiline)
      • List<T> (tüübiline)
      • LinkedList<T> (tüübiline kahetippeline nimekiri)
    • Massivid (Arrays): Fikseeritud suurusega, juurdepääs indeksiga.
      • Array (põhiklass)
      • T[] (süntaksisuhkur massiividele)
    • Sõnastikud (Dictionaries): Paari võtme-väärtusega kollektsioonid, juurdepääs võtme järgi.
      • Hashtable (mitte-tüübiline)
      • Dictionary<TKey, TValue> (tüübiline)
      • SortedList (mitte-tüübiline, sorteeritud võtme järgi)
      • SortedList<TKey, TValue> (tüübiline, sorteeritud võtme järgi)
      • SortedDictionary<TKey, TValue> (tüübiline, sorteeritud võtme järgi, kasutab punane-must puud)
    • Hulgad (Sets): Unikaalsete elementide kollektsioonid.
      • HashSet<T> (tüübiline, sortimata)
      • SortedSet<T> (tüübiline, sorteeritud)
    • Järjekorrad (Queues): Kollektsioonid, mis töötavad FIFO põhimõttel.
      • Queue (mitte-tüübiline)
      • Queue<T> (tüübiline)
    • Kangid (Stacks): Kollektsioonid, mis töötavad LIFO põhimõttel.
      • Stack (mitte-tüübiline)
      • Stack<T> (tüübiline)
  3. Jooksuturvalisuse järgi:

    • Mitteturvalised (Non-thread-safe): Enamik standardkollektsioone (System.Collections, System.Collections.Generic). Vajavad välist sünkroneerimist mitme- jaotises töötamiseks.
    • Jooksuturvalised (Concurrent): Mõeldud turvaliseks töötamiseks mitme- jaotises ilma välimise lukustamiseta (System.Collections.Concurrent).
      • ConcurrentBag<T>
      • ConcurrentDictionary<TKey, TValue>
      • ConcurrentQueue<T>
      • ConcurrentStack<T>
  4. Muudetavuse järgi:

    • Muudetavad (Mutable): Enamik kollektsioone võimaldab lisamist, kustutamist ja elementide muutmist.
    • Muutumatud (Immutable): Tagavad muutumatuse pärast loomist (System.Collections.Immutable). Iga muutmise operatsioon tagastab uue kollektsiooni.
      • ImmutableArray<T>
      • ImmutableList<T>
      • ImmutableDictionary<TKey, TValue>
      • ImmutableHashSet<T>
      • ImmutableSortedSet<T>
      • ImmutableQueue<T>
      • ImmutableStack<T>

Konkreetse kollektsiooni tüübi valik sõltub ülesande nõuetest: andmetüüp, vajadus juurdepääsuks indeksiga või võtmega, elementide unikaalsusnõuded, salvestusjärjestus, jõudlus, jooksuturvalisus ja muutuvus.