Ga naar inhoud

C# Data Structures

Inleiding

Deze documentatie dient als leidraad om theoretische concepten in onder meer object georiënteerd programmeren, databases en infrastructuur te begrijpen en toe te passen. Het benadrukt de relevantie van theoretische kennis voor praktische toepassingen in je project en biedt een gestructureerde aanpak voor het documenteren van je voortgang.

Samenvatting van de cursus in ongeveer 300 woorden

Deze cursus ging over de verschillende data structuren die bestaan in de C# standaard library. De cursus zelf vertelde er kort iets over elke structuur en ging daarna veel tijd besteden aan voorbeelden van gebruik ervan, wat ik jammer vond want de informatie die erin voorkwam is allemaal beschikbaar, in tekst, op de officiële documentatie. Wat natuurlijk op eigen (sneller) tempo geconsumeerd kan worden, wat veel fijner is.

Het ging over de niet en wel generic varianten van deze data structuren, wat al behandeld is in de cursussen over generics. Voornamelijk dat met generics je typechecking hebt en dat met deze vaste types je code efficiënter uitgevoerd kan worden.

Data structuur Uitleg
List Een array dat van grootte kan veranderen, door een nieuwe array te maken met een dubbele grootte en de inhoud ernaar te kopiëren
(Doubly)LinkedList Niet echt een lijst, eerder een wolk van verbonden punten, die altijd maar met één andere punt kunnen verbinden in beide richtingen, waardoor je een lijst krijgt als je door alles op volgorde gaat. Dankzij deze verbindingen is het langzamer om erdoorheen te gaan, maar super snel om op een willekeurige plaats een nieuwe element tussen te plaatsen.
Stack Een array/list waar je alleen op en van het uiteinde elementen mag toevoegen en afhalen, waarmee je een LIFO volgorde kan forceren. Net als een stapel blikken kan je niet zomaar een blik uit het midden pakken, dan zou het instorten.
Queue Een array/list waar je alleen kan toevoegen en afhalen van tegenoverstaande kanten van de lijst, waarmee je een FIFO volgorde hebt. Je kan niet iemand uit het midden van de rij pakken, want dan zou diegene voorpiepen.
Dictionary Een (meestal) hashmap waar je elke willekeurige type als index kan gebruiken en daarbij een waarde opslaan, wat dankzij hashing qua snelheid in de buurt komt van een normale array. In ieder geval vergeleken met door elke item loopen en checken of je de juiste hebt gevonden.
ListDictionary Een dictionary dat een LinkedList gebruikt in plaats van een hashmap, waardoor elke operatie O(n) is. Wat alleen sneller is met 10 of minder elementen, dus meestal heb je er niks aan.
HybridDictionary Een combinatie tussen de normale Dictionary en ListDictionary, het stapt over naar een hashtable wanneer dit sneller is. Alleen is het snelheids verschil het niet echt waard, dus heeft Microsoft er niet eens een generic variant van gemaakt.
OrderedDictionary Net een dictionary, maar het garandeert dat de gegeven volgorde hetzelfde blijft. Alleen is het oud en heeft het geen generic variant. Dus heb ik een keer een losse list en normale dictionary gebruikt voor hetzelfde resultaat.
StringCollection Eigenlijk een list van strings, voor in het verleden toen C# nog geen generics had.
StringBuilder Een factory waarmee je stapsgewijs een string kan opbouwen, op een manier met meer informatie over het resultaat waardoor het efficiënter kan. Alleen word dit ook gebruikt als je string interpolation gebruikt, dus het is meestal niet nodig.

Relevantie tot je project en praktische toepassing

Met deze datastructuren kunnen wij data op een logischere manier opslaan dan altijd hetzelfde voor alles, zodat de structuur matched wat het moet voorstellen. Daardoor matcht de structuur ook wat wij ermee willen doen, met als resultaat dat het sneller is om te gebruiken.

Ook hiervan maak ik al veel gebruik. Van de modernere structuren, met generics, heb ik alleen nog niet een situatie gevonden waar een LinkedList of Stack gebruikt kan worden. Hier ben ik benieuwd naar.

Resultaten LinkedIn Learning cursus

Link LinkedIn Certificaat.

Resultaten quiz op DLO

Vragen voor expert review

[Stel drie concrete vragen op die je tijdens de expert review wil behandelen. Deze vragen zijn gericht op het verkrijgen van feedback en inzichten van de beoordelaar.] 1. 1. 1.


Laatst geüpdatet: June 9, 2024
Gecreëerd: May 20, 2024