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:
-
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.
- Mitte-tüübil (Untyped): Salvestavad objekte tüübis
-
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)
- Nimekirjad (Lists): Järjendkolekcioonid, juurdepääs elementidele indeksiga.
-
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>
- Mitteturvalised (Non-thread-safe): Enamik standardkollektsioone (
-
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.