Een Dictionary is een datatype dat wordt gebruikt om data op te slaan in sleutel-waarde paren. In een Dictionary is elke sleutel uniek, en elke sleutel wijst naar een waarde. Dit maakt Dictionaries ideaal voor situaties waar je snel gegevens wilt opzoeken op basis van een specifieke sleutel.
Casus
Stel, je hebt een lijst van studenten met hun bijbehorende cijfers en je wilt snel het cijfer van een specifieke student opzoeken. In plaats van door een lijst van objecten te itereren, kun je een Dictionary gebruiken waarbij de studentnamen de sleutels zijn en hun cijfers de waarden.
Hoe zit een Dictionary in elkaar?
Een Dictionary bestaat uit twee hoofdcomponenten: de sleutel en de waarde. De sleutel wordt gebruikt om de waarde te identificeren, en de waarde is de informatie die aan die sleutel is gekoppeld. Een Dictionary kan efficiënt zoeken en ophalen van waarden, omdat het gebruik maakt van een zogenaamde “hash table” structuur.
Codevoorbeeld
Dictionary<string, int> studentenCijfers = new Dictionary<string, int>();studentenCijfers.Add("Jan", 8);studentenCijfers.Add("Pieter", 6);studentenCijfers.Add("Maria", 9);
In dit voorbeeld wordt een Dictionary gemaakt waarin de sleutels van type string (studentnamen) zijn en de waarden van type int (cijfers). De Add methode wordt gebruikt om de gegevens toe te voegen.
Een Dictionary maakt gebruik van hashing om snelle zoek- en opvraagacties mogelijk te maken. Elke sleutel moet uniek zijn, maar waarden kunnen wel worden herhaald.
Een Dictionary kan van elk type zijn, zoals bijvoorbeeld: Dictionary<string, int> waarbij de sleutel een string is en de waarde een int.
Hoe gebruik je een Dictionary?
Een Dictionary wordt voornamelijk gebruikt wanneer je gegevens wilt opslaan die snel op basis van een sleutel moeten worden opgezocht. Het is zeer nuttig in situaties waar de prestaties van toegang en zoekopdrachten belangrijk zijn, zoals bij het implementeren van caches of het bijhouden van configuratie-instellingen.
Alternatieven voor een Dictionary zijn bijvoorbeeld lijsten of arrays, maar die bieden geen directe toegang via een sleutel en zijn dus minder efficiënt voor deze toepassingen.
Casus
Stel je voor dat je een systeem ontwikkelt waarbij je de voorraad van een winkel bijhoudt. Elke productnaam is de sleutel, en de voorraadhoeveelheid is de waarde. Je wilt snel het aantal stuks van een bepaald product opzoeken, en een Dictionary is de ideale keuze.
Mogelijke uitwerking van de casus
Dictionary<string, int> productVoorraad = new Dictionary<string, int>();productVoorraad.Add("Appels", 150);productVoorraad.Add("Bananen", 80);productVoorraad.Add("Perziken", 120);// Toegang tot voorraad van een specifiek productint appelsVoorraad = productVoorraad["Appels"];Console.WriteLine($"Er zijn {appelsVoorraad} appels op voorraad.");
In dit voorbeeld wordt de voorraad van verschillende producten bijgehouden in een Dictionary. De voorraad kan snel worden opgevraagd door de naam van het product te gebruiken als sleutel.
Bewerkingen op de Dictionary
Add
Add kan worden gebruikt om een key-value paar toe te voegen aan een Dictionary