‫Und in dieser Lektion werden wir Hash-Tabellen behandeln und uns später auch Wörterbücher ansehen.
‫Hashtabellen und Wörterbücher sind daher einige der nützlichsten Sammlungen in C Sharp.
‫Wir werden also sehen, wie man sie definiert und verwendet, und in welchem Fall wir sie nutzen sollten,
‫um das Konzept von Hashing und Tabellen zu verstehen.
‫Denken Sie zuerst an ein richtiges Wörterbuch.
‫Nehmen wir also an, wir haben ein deutsches und englisches Wörterbuch, in dem jedes Wort im Deutschen nur einem Wort
‫im Englischen entspricht, denn das wäre hier die Einschränkung.
‫Wenn wir also versuchen, das Wort Auto zu übersetzen, das im Deutschen im Grunde übersetzt Auto ins Englische
‫bedeutet, verwenden wir ein Wort als Schlüsselwort, nach dem wir beispielsweise suchen können, und wir haben als Ergebnis eine Übersetzung
‫erhalten.
‫Es gibt also immer diese Eins-zu-Eins-Beziehung.
‫Wir haben also Auto und das bedeutet Auto.
‫Und genau das können wir auch mit Hash-Tabellen erreichen, und wir werden dies hier in einem ganz konkreten Beispiel
‫verwenden.
‫Nehmen wir also an, wir haben ein Schülerregistrierungssystem, bei dem jeder Schüler einen Ausweis und viele andere
‫Daten wie Name, Alter, Noten und Bild usw. hat.
‫Damit ein solches System funktioniert, benötigen wir für jeden einzelnen Schüler einen speziellen Ausweis.
‫Es muss also einzigartig sein.
‫Wenn wir diese Daten mit einer Hash-Tabelle oder einem Wörterbuch speichern würden, wäre die Schüler-ID der
‫Schlüssel und die Schülerdaten wären ein Objekt, das alle anderen Schülerinformationen enthält und das wäre der
‫Wert.
‫Wir haben also immer dieses Schlüssel-Wert-Paar.
‫Okay, so findet man sozusagen die eigentlichen Daten und das ist der Wert, der dahinter steckt.
‫Sie können es also wie ein Schließfach sehen.
‫Dies ist also die Idee des Schließfachs oder der Standort des Schließfachs.
‫Dabei kann es sich um verschiedene Arten von Daten handeln.
‫Es muss keine ID sein und dies wird der Wert sein.
‫Das Wörterbuch muss also in einer Hash-Tabelle vom gleichen Typ sein.
‫Sie können unterschiedlicher Art sein.
‫Dies könnte also eine ganze Zahl sein und dies könnte zum Beispiel ein Objekt sein.
‫Also schauen wir uns zuerst Hash-Tabellen an.
‫Daher werden wir eine neue Klasse erstellen oder ich habe eine neue Klasse dafür vorbereitet.
‫Legen wir es hier ab.
‫Und es hat ein paar Eigenschaften.
‫Es hat eine ID-Eigenschaft, eine Namenseigenschaft und den GPA.
‫Und dann haben wir einen sehr einfachen Konstruktor, der einfach den Wert zuweist.
‫Die ID, die wir beim Erstellen an das Studentenobjekt übergeben, ist also die ID dieses Studentenobjekts und so
‫weiter.
‫OK, also nichts Besonderes hier.
‫Wir verwenden nur eine normale Klasse, wie wir sie im Klassenkapitel behandelt haben.
‫Jetzt könnten wir natürlich diese Klasse in einer separaten Datei erstellen,
‫damit wir unseren Lösungs-Explorer öffnen können.
‫Fahren Sie fort und erstellen Sie hier eine neue Datei.
‫Fügen Sie also ein neues Element oder eine neue Klasse wie Schule und Student hinzu.
‫Aber für dieses Beispiel werde ich es einfach halten und es in eine Datei packen.
‫Wie Sie wissen, ist es am besten, es in eine separate Datei zu legen, damit Sie nichts vermischen und
‫Sie Dateien und Klassen und all das einfacher finden können.
‫OK, jetzt, da wir unsere Schülerklasse haben, können wir fortfahren und eine Hash-Tabelle erstellen.
‫OK, also in unserem Programm hier, in der main-Methode, definiere ich eine
‫neue Hash-Tabelle und es wird so aussehen, also Hash-Tabelle und ich werde diese eine Tabelle nennen, die sein
‫wird neue Hash-Tabelle.
‫Die Hash-Tabellen-Klasse befindet sich innerhalb von Systemsammlungen, also müssen wir diesen Namespace hier mit System that
‫Collections hinzufügen, also Hash-Tabelle und sie unterscheidet sich vom Hash-Tabellen-Namespace, weil ich meinen so genannt
‫habe, was unsere Idee hier verwirren könnte, wenn wir wollen um eine Hash-Tabelle einzugeben, ohne dass dieser Namespace
‫zu unserem Projekt hinzugefügt wird.
‫Aber jetzt, da wir es in unserer Programmklasse haben, können wir es verwenden.
‫Wir haben also diese neue Hash-Tabelle, die jetzt eine Datentabelle sein wird, und wir können die gewünschten Daten dort
‫einfügen.
‫So können Sie also eine solche Hash-Tabelle erstellen, wie Sie sie mit einem Hash-Tabellen-Objekt initialisieren, wie wir es hier
‫getan haben.
‫Was wir jetzt also tun können, ist, dieser Hashtabelle Werte zuzuweisen, und wir könnten sie sogar Studententabelle nennen,
‫um unseren Code etwas lesbarer zu machen.
‫Jetzt müssen wir nur noch eine Reihe von Schülern erstellen, die wir in unserer Tabelle haben möchten.
‫Lassen Sie mich diese hier ebenfalls hinzufügen.
‫Ich nenne sie Studd eins, beginnen zwei bis drei bis vier, und sie werden alle neue Studentenobjekte sein.
‫Hier wird dies also ein Student mit der ID sein.
‫Eine davon wird Maria Chiasm GPA von 98 sein.
‫Und wir haben Jason, der die Idee dazu haben wird.
‫Das ist diese Idee, sozusagen die eindeutige Kennung und dann der Notendurchschnitt, den die Schüler haben.
‫Okay, jetzt haben wir alle diese Schüler und können sie mit dem Schülerausweis unserer Schülertabelle zuordnen.
‫Und die gute Praxis wäre, weiterzumachen und die Schüler am Tisch zu halten, die hinzufügen.
‫Und hier haben wir ein I geklaut. D. Also dieser hier, die Eigenschaft als Schlüssel.
‫Sie können hier also sehen, dass eine Hash-Tabelle es uns ermöglicht, ein Objekt vom Typ key off zu haben, sodass es sich
‫um einen beliebigen Objekttyp als Schlüssel handeln kann und es kann ein optionales oder nullables Objekt sein, das den Wert hat, sodass wir einen Wert zuweisen
‫können, der null sein kann , aber wir werden einen Wert zuweisen, und das wird der Schüler selbst sein.
‫OK, jetzt haben wir unseren Schüler-Eins zu unserem Schüler-Tisch hinzugefügt und wir können dasselbe mit den anderen Schülern machen
‫und werden ihre ID für jeden von ihnen verwenden.
‫Also lassen Sie uns die Schülertabelle hier für alle verwenden.
‫OK, das ist jetzt unsere Hash-Tabelle.
‫Aber wie können wir Einträge abrufen, also wie können wir Einträge aus unserer Hash-Tabelle abrufen?
‫Nun, schauen wir uns verschiedene Wege dafür an.
‫Das erste, was wir tun können, ist, hier einfach ein Schülerobjekt zu erstellen.
‫Student und dieses Objekt werden also gespeicherter Student genannt.
‫OK, ich hole den Schülerwert aus meiner Tabelle.
‫In diesem Fall ist es also der Schülertisch.
‫Studententisch so.
‫Und hier kann ich, ähnlich wie ich in einem Array trainiere, wie X ein Wert in einem Array ist, über eine ID
‫darauf zugreifen.
‫Also hier zum Beispiel, sagen wir, ich möchte das bei Idy so bekommen.
‫Hier besteht also das Problem, dass diese Hash-Tabelle Werte vom Typ Objekt haben kann.
‫Richtig, wie wir vorhin gesehen haben.
‫Wenn wir also weitermachen und die Methode ADD aufrufen, können Sie sehen, dass wir einen Schlüssel zuweisen können, aber dann wird der Wert
‫vom Typ Objekt sein.
‫Und das bedeutet, dass dies hier vom Typ Objekt ist.
‫Aber wir können dem Schüler nicht nur einen Objekttyp zuweisen.
‫Es muss vom Typ Student sein, da dieser Student tatsächlich vom Typ Student ist.
‫OK, wir müssen also sicherstellen, dass wir es hier in einen Schüler werfen, und dann wird es funktionieren.
‫OK, wir werfen dieses Objekt in einen Schüler ein, weil wir wissen, dass es in der Schülertabelle an Position
‫eins ist.
‫Bei ID eins wird der Wert tatsächlich vom Typ student sein.
‫Okay, hier bekommt man also den Studenten um eins, den Studentenausweis könnte man auch bekommen und so weiter.
‫Aber das funktioniert nur, weil wir wissen, dass wir diese Zahlen tatsächlich verwenden.
‫Also, wenn Sie es bekommen möchten, sonst könnten Sie eine per ID stehende verwenden.
‫Damit erhalten Sie nun den Wert hinter der Studenten-One-ID.
‫Dies gibt Ihnen also im Grunde diesen Wert.
‫Hier sind die Schüler hier.
‫Und es ist genau dieser, also dieser hier, denn das ist es, was wir in diesem speichern.
‫Also können wir jetzt fortfahren und so etwas tun, wo wir jetzt anstelle von Freitag Hallo Welt etwas Nützliches schreiben werden, wo
‫wir den Schüler I schreiben. D. , den Namen des Studenten
‫sowie seinen Notendurchschnitt.
‫Wir werden also die Ein-Gedanken-ID des Schülers verwenden.
‫Also bekommen wir seine ID, wir bekommen seinen Namen und wir bekommen seinen GPA und in diesem Fall als ihren GPA und so
‫weiter, weil ich Marea auf Position eins haben möchte.
‫OK, also lassen Sie uns das ausführen und Sie können die Studentenausweise sehen.
‫Ein Name ist Maria Antipas, 98.
‫Hier haben wir also gesehen, wie wir eine Hash-Tabelle erstellen können.
‫Auf diese Weise können wir Daten und dann eine Hash-Tabelle speichern.
‫Tatsächlich speichern wir hier die Daten und eine Hash-Tabelle.
‫Und dann können wir so Daten aus einer Hash-Tabelle abrufen.
‫Nehmen wir nun an, wir möchten tatsächlich alle Daten in unserer Hash-Tabelle ausgeben und haben
‫keinen bestimmten Schlüssel zur Verfügung.
‫Wir können das einfach tun, indem wir alle Schlüssel aus unserer Hash-Tabelle holen, um das Problem zu lösen.
‫Zuerst müssen wir eine Struktur namens Dictionary-Eintrag besprechen, wenn wir unserer Hash-Tabelle einen neuen Eintrag
‫hinzufügen.
‫Unser Schlüssel-Wert-Paar und unser neues Wörterbucheintragsobjekt werden also für uns erstellt und in unsere Hash-Tabelle
‫eingefügt, was bedeutet, dass eine Hash-Tabelle im Grunde eine Sammlung von Wörterbucheinträgen ist.
‫Wenn wir also ein temporäres Objekt eines Wörterbucheintrags verwenden, können wir unsere Hash-Tabelle mit einer für jede Schleife durchgehen.
‫Schauen wir uns dies in diesem speziellen Beispiel hier an, in dem ich es für jede Schleife hier verwenden
‫werde.
‫Und dies ist für jeden Schleifentyp der Wörterbucheintrag.
‫Das ist die Struktur, von der ich gesprochen habe.
‫Sie können hier einen Struct-Wörterbucheintrag sehen.
‫Was ist der Artikelname, den ich verwenden werde?
‫Ich werde die Eingabe verwenden.
‫Natürlich können Sie den Studenten oder was auch immer anrufen, da Sie wissen, dass die Einträge vom Typ Student
‫sind.
‫Aber sagen wir, Sie wissen es nicht.
‫Sie können es auch Eintrag nennen.
‫Und was ist dann die Sammlung, die wir durchlaufen möchten oder von der wir die Werte erhalten möchten?
‫Und das wird unser Schülertisch sein.
‫Also dieses abrufen.
‫Einzelstück mit bekannter ID.
‫Und hier.
‫Rufen Sie alle Werte aus einer Hash-Tabelle ab.
‫OK, also ist ein Eintrag in unserer Hash-Tabelle vom Typ Wörterbucheintrag, wie ich gerade sagte.
‫Dies ermöglicht uns nun, dies durchzugehen.
‫Ordnen Sie die Schülertabelle an und zeigen Sie im Grunde die Werte hier an, da der Eintrag ein Objekt zurückgibt, das Sie hier
‫sehen können, es heißt Objekt, aber was wir wollen, um die Schülerdetails zu erhalten, ist
‫ein Schülerobjekt.
‫Was wir tun müssen, ist, dass wir Folgendes tun müssen, damit wir einen temporären Wert erstellen, der
‫unser Eingangswert ist.
‫Jetzt haben wir das gleiche Problem, das wir hier oben hatten, OK, wo wir dies in einen Schüler werfen müssen, weil es nur ein
‫Objekt ist.
‫Rechts.
‫Aber wir möchten, dass es vom Typ Studenten ist, damit wir auf die Studenteneigenschaften zugreifen können.
‫Also weil sonst Eintrittswert dachte, den es hier nicht gibt.
‫Ich kann nicht auf seine ID zugreifen, ich kann nicht auf seinen Namen zugreifen, all das Zeug, obwohl es dort drin existiert.
‫Aber unsere ID lässt dies einfach nicht zu, weil wir zuerst sicherstellen müssen, dass wir den Wert in den richtigen Typ konvertieren
‫oder umwandeln, der unser Typ Student sein wird.
‫Also gießen wir es jetzt.
‫Wir speichern es temporär und können nun die einzelnen Werte zum Beispiel in unsere Konsole schreiben oder
‫in unserem Programm nach Belieben verwenden.
‫Hier können wir also die Studenten-ID verwenden, indem wir die temporäre ID verwenden, da temp jetzt vom Typ Student ist und der
‫Student eine ID mit dem Namen GPA hat und wir auf alle zugreifen können, um jetzt die gesamte Liste aller unserer Studenten zu durchlaufen.
‫Also lass uns das ganz schnell machen.
‫Lassen Sie uns unseren Code ausführen und sehen, was dies für jede Gruppe für uns bedeutet.
‫Sie können also sehen, wie es durchläuft.
‫Es sagt Student für Steve.
‫Schüler drei Sclera.
‫Schüler zwei ist Jason und einer ist Maria.
‫Es geht also von hinten nach gut, es beginnt beim allerletzten Eintrag und geht bis zum ersten Eintrag.
‫Das heißt, wenn wir zu diesem Zeitpunkt nicht wissen, ob es sich um einen Schüler handelt, obwohl wir
‫ihn bereits in einen Schüler umwandeln, dient dies nur dazu, Ihnen zu zeigen, dass eine Hash-Tabelle in Wirklichkeit nur eine Sammlung von
‫Wörterbucheinträgen ist.
‫Schauen wir uns also an, wie wir dies für jede Gruppe vereinfachen können.
‫Wir können es vereinfachen, indem wir tatsächlich für jedes Wort sagen, dass ein Variablentyp ein Schüler sein wird.
‫Der Artikelname.
‫Nun, man könnte es Student nennen.
‫Ich nenne es einfach Wert wie.
‫Das ist also in Ordnung.
‫Und die Sammlung, die ich durchgehen möchte, wird genommen, während die Schüler Punktwerte aufstellen.
‫Es gibt also diese I-Sammlung von Hash-Tabellenwerten, also erhält sie eine Augensammlung, die die Werte in der
‫Hash-Tabelle enthält.
‫Dies ermöglicht es uns also, die Werte direkt durchzugehen, ohne es zu müssen.
‫Machen Sie im Grunde das, was wir hier gemacht haben, wo wir es konvertiert oder in ein Studentenobjekt gegossen haben.
‫Also können wir jetzt einfach weitermachen und.
‫Machen Sie dasselbe wie hier, aber jetzt wird es natürlich von Wert sein, dass ich. D. und so weiter, denn es ist kein
‫Eintrag und es ist nicht 10, sondern es wird tatsächlich ein Wert sein, OK, denn das ist es, was
‫das für jedes Neue ist.
‫Gibt uns für jede Iteration davon, wo es alle Werte durchläuft, die wir haben, und
‫Werte werden der individuelle Wert sein, den wir derzeit für diese bestimmte Iteration suchen.
‫In der ersten Iteration wird es also sein.
‫Steve, dann wird es gründlich, dann Jason und Maria.
‫OK, wenn wir also diese Zeile hier oder diese für jede Schleife loswerden und sie erneut ausführen, werden wir sehen, dass wir
‫die gleichen Ergebnisse erhalten.
‫Also, Steve, Chloro Jason und Maria.
‫OK, das war also eine kurze Einführung in Hash-Tabellen und im nächsten Video habe ich eine
‫kleine Herausforderung für dich, bei der du grundsätzlich deinen Code ein wenig erweiterst, um Hash-Tabellen etwas besser zu verstehen.
‫Und dann schauen wir uns Wörterbücher an.