‫En deze les gaan we hashtabellen behandelen en we gaan later ook naar woordenboeken kijken.
‫Dus hash-tabellen en woordenboeken zijn enkele van de meest bruikbare collecties in C Sharp.
‫Dus we zullen zien hoe we ze kunnen definiëren en gebruiken, en in welk geval we er gebruik van moeten
‫maken om het concept van hashing en tabellen te begrijpen.
‫Denk eerst aan een echt woordenboek.
‫Dus neem aan dat we een Duits en Engels woordenboek hebben waar elk woord in het Duits overeenkomt met slechts één woord
‫in het Engels, want dat zou hier de beperking zijn.
‫Dus als we proberen het woord auto te vertalen, dat in het Duits in feite in het Engels vertaald
‫wordt naar auto, gebruiken we één woord als sleutelwoord waar we bijvoorbeeld naar kunnen zoeken, en als resultaat hebben we één
‫vertaling.
‫Er is dus altijd een één-op-één relatie.
‫Dus we hebben auto en dat vertaalt zich in auto.
‫En we kunnen precies dat bereiken, ook door hashtabellen te gebruiken en we gaan dit hier in een heel specifiek voorbeeld
‫gebruiken.
‫Dus laten we zeggen dat we een studentenregistratiesysteem hebben waarbij elke student een ID heeft en vele
‫andere gegevens, zoals naam, leeftijd, cijfers en foto, enzovoort.
‫Om zo'n systeem te laten werken, hebben we voor elke student een speciale ID nodig.
‫Het moet dus uniek zijn.
‫Als we deze gegevens zouden opslaan met behulp van een hashtabel of een woordenboek, zou de student-ID
‫de sleutel zijn en de studentgegevens een object dat alle andere studentinformatie bevat en dat zou de waarde
‫zijn.
‫We hebben dus altijd dit sleutelwaardepaar.
‫OK, dus dit is hoe je de feitelijke gegevens kunt vinden, om zo te zeggen, en dit is de waarde die erachter zit.
‫Dus je kunt het zien als een kluisje.
‫Dit is dus het idee van de locker of de locatie van de locker.
‫Het kunnen verschillende soorten gegevens zijn.
‫Het hoeft geen ID te zijn en dit is de waarde.
‫Dus het woordenboek, ze moeten van hetzelfde type zijn in een hashtabel.
‫Ze kunnen van verschillende typen zijn.
‫Dit kan dus een geheel getal zijn en dit kan bijvoorbeeld een object zijn.
‫Dus we gaan eerst naar hashtabellen kijken.
‫Daarom gaan we een nieuwe klas aanmaken of eigenlijk heb ik hiervoor een nieuwe klas voorbereid.
‫Laten we het hier neerzetten.
‫En het heeft een aantal eigenschappen.
‫Het heeft een ID-eigenschap, een naameigenschap en de GPA.
‫En dan hebben we een heel eenvoudige constructor die eenvoudigweg de waarde toewijst.
‫Dus welke ID we ook doorgeven aan het studentobject wanneer we het maken, het zal de ID van dat studentobject zijn,
‫enzovoort.
‫OK, dus niets bijzonders hier.
‫We gebruiken gewoon een normale klas zoals we hebben behandeld in het hoofdstuk over de klas.
‫Nu kunnen we natuurlijk doorgaan en deze klasse in een apart bestand
‫maken, zodat we onze oplossingsverkenner kunnen openen.
‫Ga je gang en maak hier een nieuw bestand aan.
‫Dus voeg een nieuw item of een nieuwe klas toe, zoals school en student.
‫Maar voor dit voorbeeld ga ik het simpel houden en in één bestand stoppen.
‫Zoals je weet, is het het beste om het in een apart bestand te plaatsen, zodat je geen dingen door elkaar
‫haalt en je gemakkelijker bestanden en klassen kunt vinden en zo.
‫OK, dus nu we onze studentenklas hebben, kunnen we doorgaan en een hashtabel maken.
‫OK, dus binnen in ons programma hier, in de hoofdmethode, ga ik een
‫nieuwe hashtabel definiëren en het zal zijn als, dus hashtabel en ik ga deze ene tabel noemen, die zal
‫zijn nieuwe hashtabel.
‫De hash-tabelklasse bevindt zich in systeemverzamelingen, dus we moeten deze naamruimte hier toevoegen met behulp van system that
‫collections, dus hash-tabel en het is anders dan de hash-tabellennaamruimte, want zo heb ik mijn genoemd, wat
‫ons idee hier zou kunnen verwarren als we dat willen om de hash-tabel in te voeren zonder dat deze naamruimte
‫aan ons project is toegevoegd.
‫Maar nu we het in onze programmaklasse hebben, kunnen we het gebruiken.
‫We hebben dus deze nieuwe hashtabel, die nu een gegevenstabel zal zijn en we kunnen de gewenste gegevens daarin
‫plaatsen.
‫Dus dit is hoe je zo'n hash-tabel kunt maken, hoe je deze kunt initialiseren met een hash-tabelobject zoals we hier
‫hebben gedaan.
‫Dus wat we nu kunnen doen, is dat we waarden aan deze hashtabel kunnen toewijzen en we zouden het zelfs een studententabel kunnen
‫noemen om onze code een beetje leesbaarder te maken.
‫Dus nu hoeven we alleen nog maar een groep studenten aan te maken die we in onze tabel willen hebben.
‫Dus laat ik die hier ook toevoegen.
‫Ik noem ze Studd één start twee tot drie tot vier, en het zullen allemaal nieuwe studentenobjecten zijn.
‫Dus hier is dit de student met de ID.
‫Een daarvan is Maria Chiasm GPA van 98.
‫En we hebben Jason, die het idee zal hebben van een.
‫Dit is dit idee, de unieke identificatie, om zo te zeggen, en dan de GPA die de studenten hebben.
‫OK, dus nu hebben we al die studenten en kunnen we ze toewijzen aan onze studententabel met behulp van de
‫studenten-ID.
‫En de goede gewoonte zou zijn om door te gaan en studenten aan tafel te houden die toevoegen.
‫En hier stalen we vroeger een I. D. Dus deze hier, het pand als sleutel.
‫Dus je kunt hier zien dat een hash-tabel ons in staat stelt om een key off-type object te hebben, dus het
‫kan elk type object zijn als de sleutel en het kan een object zijn optioneel of nullable heeft de waarde, zodat we een waarde kunnen toewijzen
‫die null kan zijn , maar we gaan een waarde toekennen en dat zal de student zelf zo zijn.
‫OK, dus nu hebben we onze student één toegevoegd aan onze studententabel en we kunnen hetzelfde doen met de andere studenten
‫en we gaan hun ID voor elk van hen gebruiken.
‫Dus laten we hier de studententabel gebruiken voor alle.
‫OK, dus dat is nu onze hashtabel.
‫Maar hoe kunnen we items ophalen, dus hoe kunnen we items ophalen uit onze hashtabel?
‫Laten we er verschillende manieren voor bekijken.
‫Dus het eerste dat we kunnen doen, is dat we hier gewoon een studentobject kunnen maken.
‫Dus student en dit object worden opgeslagen student genoemd.
‫Oké, dus ik ga de studentenwaarde van mijn tafel halen.
‫Dus in dit geval is het de studententafel.
‫Studenten tafelen zo.
‫En hier, vergelijkbaar met hoe ik in een array oefen, hoe X een waarde in een array is, kan ik er toegang toe krijgen via
‫een ID.
‫Dus laten we hier bijvoorbeeld zeggen dat ik die van Idy zo wil hebben.
‫Dus hier is het probleem dat deze hashtabel waarden kan hebben die van het type object zijn.
‫Juist, zoals we eerder zagen.
‫Dus hier, als we doorgaan en de ADD-methode aanroepen, kun je zien dat we een sleutel kunnen toewijzen, maar dan is de waarde
‫van het type object.
‫En dat betekent dat dit hier van het type object zal zijn.
‫Maar we kunnen de leerling niet zomaar een objecttype toekennen.
‫Het moet van het type student zijn, want deze student is in feite een type student.
‫OK, dus we moeten ervoor zorgen dat we het hier in een student gieten en dan zal dit werken.
‫OK, dus we gieten dit object in een student omdat we dat weten in de tafel van de student
‫op positie één.
‫Dus bij de ID is de waarde in feite van het type student.
‫Oké, dus hier kun je de student krijgen, je kunt ook de studentenkaart krijgen, enzovoort.
‫Maar dat werkt alleen omdat we weten dat we deze cijfers in feite gebruiken.
‫Dus als je het wilt krijgen, anders zou je Stand One by ID kunnen gebruiken.
‫Dus dit geeft je nu de waarde achter het student-één-ID.
‫Dus dit geeft je in principe deze waarde.
‫Hier zijn de studenten.
‫En het is deze om precies te zijn, dus deze hier, want dat is wat we bij deze opslaan.
‫Dus nu kunnen we doorgaan en zoiets als dit doen, waar we nu in plaats van Friday Hello World, daadwerkelijk iets nuttigs gaan schrijven,
‫waarbij we de student I schrijven. D. , de naam van de student,
‫evenals zijn GPA.
‫Dus we gaan de student one thought-ID gebruiken.
‫Dus we krijgen zijn ID, we krijgen zijn naam en we krijgen zijn GPA en in dit geval haar GPA enzovoort, want
‫het is Marea op positie één die ik wil.
‫Oké, dus laten we dit uitvoeren en je kunt student-ID's zien.
‫Eén naam is Maria Antipas, 98.
‫Dus hier hebben we gezien hoe we een hashtabel kunnen maken.
‫Dit is hoe we gegevens kunnen opslaan en vervolgens de hash-tabel.
‫Eigenlijk slaan we hier de gegevens en een hashtabel op.
‫En dan is dit hoe we gegevens uit een hashtabel kunnen halen.
‫Laten we nu aannemen dat we alle gegevens in onze hashtabel echt willen afdrukken en dat we geen
‫bepaalde sleutel tot onze beschikking hebben.
‫We kunnen dat eenvoudig doen door alle sleutels uit onze hashtabel te halen om dit op te lossen.
‫Ten eerste moeten we een struct met de naam woordenboekinvoer bespreken wanneer we een nieuw item aan onze hashtabel
‫toevoegen.
‫Dus ons sleutelwaardepaar en het nieuwe object voor woordenboekinvoer worden voor ons gemaakt en het wordt in
‫onze hashtabel ingevoegd, wat betekent dat een hashtabel in feite een verzameling woordenboekitems is.
‫Dus met behulp van een tijdelijk object van woordenboekinvoer, kunnen we onze hashtabel doorlopen met a for elke lus.
‫Dus laten we hier eens naar kijken in dit specifieke voorbeeld waar ik verder ga en het voor elke lus hier
‫gebruiken.
‫En dit voor elk lustype is het woordenboekitem.
‫Dat is de structuur waar ik het over had.
‫U kunt hier structwoordenboekinvoer zien.
‫Dus wat is de naam van het item dat ik ga gebruiken?
‫Ik ga entry gebruiken.
‫Natuurlijk kun je de student bellen of wat dan ook, omdat je weet dat de inzendingen van het type student zullen
‫zijn.
‫Maar laten we zeggen dat je het niet weet.
‫Je kunt het ook ingang noemen.
‫En wat is dan de collectie waar we dit doorheen willen halen of waar we de waarden uit willen halen?
‫En dat wordt onze studententafel.
‫Dus deze ophalen.
‫Individueel item met bekende ID.
‫En hier.
‫Haal alle waarden op uit een hashtabel.
‫OK, dus een invoer in onze hashtabel is van het type woordenboekinvoer, zoals ik net zei.
‫Dus dit stelt ons nu in staat om hier doorheen te gaan.
‫Tabel de studententabel en geef in feite de waarden weer, dus hier, omdat invoer, de waarde een object retourneert dat je hier kunt
‫zien, er staat object, maar wat we willen om de studentdetails te krijgen, wordt
‫een studentobject.
‫Wat we moeten doen, is dat we het volgende moeten doen, zodat we een tijdelijke waarde creëren, die
‫onze invoerwaarde zal zijn.
‫Nu hebben we hetzelfde probleem dat we hier hadden, oké, waar we dit in een student moeten gieten omdat het maar een
‫object is.
‫Rechts.
‫Maar we willen dat het van het type studenten is, zodat we toegang hebben tot de studentenwoningen.
‫Dus omdat anders de invoerwaarde dacht dat het het hier niet heeft.
‫Ik heb geen toegang tot zijn ID, ik heb geen toegang tot zijn naam, al die dingen, ook al bestaat het daarbinnen.
‫Maar onze ID staat dat gewoon niet toe, omdat we er eerst voor moeten zorgen dat we de waarde converteren of casten
‫naar het juiste type, dat onze typestudent wordt.
‫Dus nu casten we het.
‫We slaan het tijdelijk op en nu kunnen we doorgaan en de individuele waarden bijvoorbeeld naar onze console schrijven of
‫in ons programma gebruiken zoals we willen.
‫Dus hier kunnen we de student-ID gebruiken door tijdelijke ID te gebruiken, omdat temp nu van het type student is en
‫student heeft ID, naam GPA en we hebben toegang tot al deze om nu de volledige lijst van al onze studenten te doorlopen.
‫Dus laten we dat heel snel doen.
‫Laten we onze code uitvoeren en kijken wat dit voor elke groep voor ons doet.
‫Je ziet dus dat het er doorheen gaat.
‫Er staat student voor Steve.
‫Student drie Sclera.
‫Student twee is Jason en één is Maria.
‫Dus als het van terug naar bron gaat, begint het bij de allerlaatste invoer en gaat omhoog naar de eerste invoer.
‫Dat wil zeggen, als we op dit moment niet weten of het een student is, ook al zijn we het
‫al aan het omzetten in een student, dan is dit eigenlijk alleen maar om je te laten zien dat een hashtabel eigenlijk gewoon een
‫verzameling woordenboekitems is.
‫Laten we dus eens kijken hoe we dit voor elke groep kunnen vereenvoudigen.
‫We kunnen het vereenvoudigen door voor elk woord te zeggen dat een variabel type een student zal zijn.
‫De itemnaam.
‫Nou, je zou het student kunnen noemen.
‫Ik ga het gewoon waarde noemen.
‫Dus dat is prima.
‫En de verzameling die ik wil doornemen, zal worden genomen terwijl de studenten de waarden van punten aangeven.
‫Dus er is een I-verzameling van hashtabelwaarden, dus het krijgt een oogverzameling met de waarden in
‫de hashtabel.
‫Dit stelt ons dus in staat om direct door de waarden te gaan zonder dat dit nodig is.
‫Kortom, doe wat we hier hebben gedaan, waar we het hebben omgezet of waar we het in een studentenobject hebben gegoten.
‫Dus nu kunnen we gewoon doorgaan en.
‫Doe hetzelfde als we hier deden, maar nu zal het natuurlijk waardevol zijn dat ik. D. enzovoort, want het is geen binnenkomst en
‫het is geen 10, maar het zal in feite waarde hebben, oké, want dat is wat dit
‫voor elke nieuwe is.
‫Geeft ons voor elke iteratie ervan, waar het door alle waarden gaat die we hebben en
‫waarden zullen de individuele waarde zijn waar we momenteel naar kijken voor die specifieke iteratie.
‫Dus in de eerste iteratie zal het zo zijn.
‫Steve, dan zal het grondig zijn dan Jason en Maria.
‫Oké, dus als we deze regel hier of deze voor elke lus wegdoen en hem opnieuw uitvoeren, zullen we zien dat
‫we dezelfde resultaten krijgen.
‫Dus Steve, Chloro Jason en Maria.
‫OK, dus dat was een korte introductie in hash-tabellen en de volgende video, ik heb een kleine
‫uitdaging voor je, waarbij je je code in feite een beetje uitbreidt om hash-tabellen een beetje beter te begrijpen.
‫En dan gaan we woordenboeken bekijken.