Eine Hash-Tabelle ist eine Sammlung in C#, die als Schlüssel-Wert-Paare identifizierte Elemente enthält. Im Gegensatz zu anderen Datenstrukturen wie Stack, Queue oder ArrayList in C#, die einen einzelnen Wert speichern, speichert eine Hash-Tabelle in C# zwei Werte. Diese beiden Werte, ein Schlüssel-Wert-Paar, bilden ein Element der Hash-Tabelle.
In einer Hash-Tabelle sind Schlüssel eindeutig und sollten nicht null sein. Werte in einer Hash-Tabelle können null sein und sich wiederholen.
In C# stellt die System.collections-Schnittstelle eine Klasse namens „Hashtable“ zur Darstellung einer Hash-Tabellensammlung bereit. Diese Klasse bietet verschiedene Konstruktoren zum Erstellen von Hash-Tabellenobjekten sowie Methoden und Eigenschaften zum Ausführen verschiedener Vorgänge an Hash-Tabellenobjekten.
In diesem Artikel erfahren Sie, wie Sie die Schlüssel in einer Hash-Tabellensammlung basierend auf ihren Werten abrufen.
Die Hashtable-Klasse verfügt über keine direkte Methode, um den Schlüssel basierend auf dem Wert in der Hash-Tabelle abzurufen. Daher müssen wir ein Programm schreiben, das eine Sammlung von Tabellen hasht, um den Schlüssel mit einem gegebenen Wert abzurufen.
Besprechen wir die Methode zum Erhalten des Schlüssels basierend auf dem Wert. Dazu durchlaufen wir die gesamte Hash-Tabelle basierend auf dem Hash-Tabellenschlüssel. Anschließend gleichen wir jeden Wert dem angegebenen Wert ab und geben bei Übereinstimmung der Werte den entsprechenden Schlüssel zurück.
Zum Durchlaufen der Hash-Tabelle können wir die folgende foreach-Schleife verwenden.
foreach (string key in langCodes.Keys) { if (langCodes[key].ToString() == value) { retKey = key; } }
Der Iterator, den wir in der foreach-Schleife zum Durchlaufen der Hash-Tabelle verwenden, ist die Sammlung von Schlüsseln (langCodes.Keys). Der entsprechende Wert für jeden Schlüssel wird dann mit dem angegebenen Wert verglichen, und wenn eine Übereinstimmung vorliegt, wird dieser spezifische Schlüssel zurückgegeben.
Das folgende Programm zeigt diese Implementierung.
using System; using System.Collections; class Program { public static void Main(){ // Create a Hashtable Hashtable langCodes = new Hashtable(); // Add elements to the Hashtable langCodes.Add("C++", "CPlusPlus"); langCodes.Add("C#", "CSharp"); langCodes.Add("Java", "Java"); langCodes.Add("PL", "Perl"); string value = "CSharp"; string retKey=""; foreach (string key in langCodes.Keys){ if (langCodes[key].ToString() == value){ retKey = key; } } if(retKey != ""){ Console.WriteLine("Key for the value = {0} is {1}", value,retKey); } else { Console.WriteLine("Key for the value = {0} is not present in the Hashtable", value); } } }
Hier haben wir eine Hash-Tabelle namens „langCodes“, die aus Programmiersprachencodes und den entsprechenden Werten besteht. Deklarieren Sie eine Zeichenfolgenvariable, die den angegebenen Wert enthält. Verwenden Sie dann das foreach-Konstrukt, um die gesamte Hash-Tabelle zu durchlaufen und nach Schlüsseln zu suchen, die mit dem angegebenen Wert übereinstimmen. Wenn ein solcher Schlüssel gefunden wird, wird der Schlüsselwert in der Variablen retKey zurückgegeben.
Wenn die Variable retKey einen Wert enthält, geben wir den Wert als Schlüssel des angegebenen Werts aus. Wenn retKey leer ist, können Sie schließen
Key for the value = CSharp is C#
Angenommen, wir möchten einen Schlüssel mit dem Wert „JavaScript“ erhalten.
string value = "JavaScript";
Mit dieser Änderung führen wir das obige Programm aus und es generiert die folgende Ausgabe.
Key for the value = JavaScript is not present in the Hashtable
Da nun in der Hash-Tabelle kein zur JavaScript-Sprache passendes Element vorhanden ist, zeigt das Programm die obige Meldung an.
Nehmen wir ein Beispiel, um dieses Thema zu vereinfachen.
Das folgende Programm ruft den Schlüssel in einer Hash-Tabelle mit einem bestimmten Wert ab.
using System; using System.Collections; class Program { public static void Main() { // Create a Hashtable Hashtable myHashTable = new Hashtable(); // Add elements to the Hashtable myHashTable.Add("First", "Hello"); myHashTable.Add("Second", "World"); myHashTable.Add("Third", ""); myHashTable.Add("Fourth", "!"); string value = ""; string retKey=""; foreach (string key in myHashTable.Keys) { if (myHashTable[key].ToString() == value) { retKey = key; } } if(retKey != ""){ Console.WriteLine("Key for the value = {0} is {1}", value,retKey); } else { Console.WriteLine("Key for the value = {0} is not present in the Hashtable", value); } } }
In diesem Programm haben wir eine Hash-Tabelle „myHashTable“, die das berühmte Zitat „Hello World!“ speichert. Aber wir speichern diese Wörter nicht zusammenhängend. Stattdessen haben wir nach dem Wort „World“ einen Nullwert eingeführt.
Dieses Programm wurde entwickelt, um Schlüssel mit Nullwerten abzurufen. Die generierte Ausgabe wird unten angezeigt.
Key for the value = is Third
Da die Hash-Tabelle hier Nullwerte zulässt, wird bei Angabe eines Nullwerts der entsprechende Nullwertschlüssel abgerufen.
Jetzt ändern wir den Wert, von dem wir den Schlüssel erhalten möchten. Als nächstes ändern wir den Wert in „!“ und führen das Programm aus.
string value = "!";
Key for the value = ! is Fourth
Das dritte Element in der Hash-Tabelle ist ein Nullwert, daher ist der letzte Teil des Zitats die vierte Position in der Hash-Tabelle.
Auf diese Weise können wir die Hash-Tabelle so programmieren, dass sie einen Schlüssel abruft, wenn ein bestimmter Wert in der Hash-Tabelle angegeben ist. Wie wir gesehen haben, können wir, da Hash-Tabellen Nullwerte zulassen, auch Nullwerte übergeben und die entsprechenden Schlüssel abrufen.
Das obige ist der detaillierte Inhalt vonC#-Programm zum Abrufen von Schlüsseln basierend auf Werten in der Hashtable-Sammlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!