C#-Hashtable mit Beispielen
⚡ Intelligente Zusammenfassung
Eine Hashtabelle in C# ist eine Sammlung aus dem Namespace System.Collections, die Daten als Schlüssel-Wert-Paare speichert, wobei jeder eindeutige Schlüssel einem Wert zugeordnet ist und der Schlüssel ein schnelles Auffinden dieses gespeicherten Werts ermöglicht.
Was ist Hashtable in C#?
Eine Hash-Tabelle ist eine spezielle Sammlung, die zum Speichern von Schlüsselwertelementen verwendet wird. Anstatt also nur einen Wert wie den Stapel, die Array-Liste und die Warteschlange zu speichern, speichert die Hash-Tabelle zwei Werte. Diese 2 Werte bilden ein Element der Hash-Tabelle.
Nachfolgend finden Sie einige Beispiele dafür, wie Werte einer Hash-Tabelle aussehen könnten.
{ "001" , ".Net" }
{ "002" , ".C#" }
{ "003" , "ASP.Net" }
Oben haben wir 3 Schlüsselwertpaare. Die Schlüssel jedes Elements sind 001, 002 bzw. 003. Die Werte jedes Schlüsselwertpaares sind „.Netz“, „C#“ bzw. „ASP.Net“.
Sehen wir uns die für die Hashtable-Sammlung verfügbaren Operationen genauer an.
Deklaration der Hashtabelle
Die Deklaration einer Hashtable ist unten dargestellt. Mit Hilfe des Hashtable-Datentyps wird eine Hashtable erstellt. Das Schlüsselwort „new“ wird verwendet, um ein Objekt einer Hashtable zu erstellen. Das Objekt wird dann der Variablen ht zugewiesen.
Hashtable ht = new Hashtable()
Elemente zur Hashtable hinzufügen
Die Add-Methode wird verwendet, um ein Element zum hinzuzufügen Warteschlange. Die allgemeine Syntax der Anweisung ist unten angegeben
HashTable.add("key","value")
Beispiel 1:
Denken Sie daran, dass jedes Element der Hash-Tabelle aus zwei Werten besteht, einer ist der Schlüssel und der andere ist der Wert.
Sehen wir uns nun an, wie dies auf Codeebene funktioniert. Der gesamte unten genannte Code wird in unsere Konsolenanwendung geschrieben.
Der Code wird in unsere Program.cs-Datei geschrieben. Im folgenden Programm schreiben wir den Code, um zu sehen, wie wir die oben genannten Methoden verwenden können.
In unserem Beispiel schauen wir uns zunächst an, wie wir eine Hashtabelle erstellen, Elemente zur Hashtabelle hinzufügen und diese entsprechend anzeigen können.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); ICollection keys = ht.Keys; foreach (String k in keys) { Console.WriteLine(ht[k]); } Console.ReadKey(); } } }
Code Erläuterung:-
- Zuerst deklarieren wir die Hashtable-Variable mithilfe des Hashtable-Datentyps und verwenden dazu das Schlüsselwort „New“. Der Name der definierten Variablen ist „ht“.
- Anschließend fügen wir mithilfe der Add-Methode Elemente zur Hash-Tabelle hinzu. Denken Sie daran, dass wir sowohl ein Schlüssel- als auch ein Wertelement hinzufügen müssen, wenn wir etwas zur Hashtabelle hinzufügen.
- Es gibt keine direkte Möglichkeit, die Elemente einer Hash-Tabelle anzuzeigen.
- Um die Hashtabelle anzuzeigen, müssen wir zunächst die Liste der Schlüssel (001, 002 und 003) aus der Hashtabelle abrufen.
- Dies erfolgt über die ICollection-Schnittstelle. Dies ist ein spezieller Datentyp, der zum Speichern der Schlüssel einer Hashtable-Sammlung verwendet werden kann. Anschließend weisen wir die Schlüssel der Hashtable-Sammlung der Variablen „keys“ zu.
- Als nächstes erhalten wir für jeden Schlüsselwert den zugehörigen Wert in der Hashtabelle, indem wir die Anweisung ht[k] verwenden.
Wenn der obige Code richtig eingegeben und das Programm ausgeführt wird, wird die folgende Ausgabe angezeigt.
Ausgang:
Schauen wir uns einige weitere Methoden an, die für Hash-Tabellen verfügbar sind.
EnthältSchlüssel
Diese Methode wird verwendet, um zu sehen, ob ein Schlüssel in der Hashtable vorhanden ist. Nachfolgend finden Sie die allgemeine Syntax dieser Anweisung. Die Anweisung gibt „true“ zurück, wenn der Schlüssel existiert, andernfalls gibt sie den Wert „false“ zurück.
Hashtable.Containskey(key)
EnthältWert
Diese Methode wird verwendet, um zu sehen, ob ein Wert in der Hashtable vorhanden ist. Nachfolgend finden Sie die allgemeine Syntax dieser Anweisung. Die Anweisung gibt „true“ zurück, wenn der Wert existiert, andernfalls gibt sie den Wert „false“ zurück.
Hashtable.ContainsValue(value)
Beispiel 2:
Lassen Sie uns den Code in unserem ändern Konsolenanwendung um zu zeigen, wie wir die Methoden „Containskey“ und „ContainsValue“ verwenden können.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); Console.WriteLine(ht.ContainsKey("001")); Console.WriteLine(ht.ContainsValue("C#")); Console.ReadKey(); } } }
Code Erläuterung:-
- Zuerst verwenden wir die Methode „ContainsKey“, um zu prüfen, ob der Schlüssel in der Hashtabelle vorhanden ist. Diese Methode gibt true zurück, wenn der Schlüssel in der Hashtabelle vorhanden ist. Diese Methode sollte „true“ zurückgeben, da der Schlüssel in der Hashtabelle vorhanden ist.
- Anschließend verwenden wir die Methode „ContainsValue“, um zu prüfen, ob der Wert in der Hashtabelle vorhanden ist. Diese Methode gibt „true“ zurück, da der Wert in der Hashtabelle vorhanden ist.
Wenn der obige Code richtig eingegeben und das Programm ausgeführt wird, wird die folgende Ausgabe angezeigt.
Ausgang:
Anhand der Ausgabe können Sie deutlich erkennen, dass sowohl der gesuchte Schlüssel als auch der gesuchte Wert in der Hash-Tabelle vorhanden sind.
Wie man eine Hashtabelle in C# durchläuft
Die obigen Beispiele lesen Werte über die Keys-Sammlung, aber eine Hashtabelle lässt sich eleganter durchlaufen. Eine foreach-Schleife über ein DictionaryEntry liefert Schlüssel und Wert jedes Elements in einem einzigen Durchlauf. Dies ist die gängigste Methode, eine Hashtabelle zu lesen.
Schritt 1) Erstelle eine Hashtabelle und füge ihr drei Schlüssel-Wert-Paare hinzu.
Schritt 2) Iteriere mit einer DictionaryEntry-Variablen über die Hashtabelle und lies anschließend die Key- und Value-Eigenschaften jedes Eintrags aus.
using System; using System.Collections; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("101", "Java"); ht.Add("102", "Python"); ht.Add("103", "Kotlin"); foreach (DictionaryEntry entry in ht) { Console.WriteLine(entry.Key + " - " + entry.Value); } Console.ReadKey(); } } }
Code Erläuterung:-
- Es wird eine Hashtabelle namens ht erstellt, und mit der Add-Methode werden drei Schlüssel-Wert-Paare eingefügt.
- Die foreach-Schleife weist jedes Element einem DictionaryEntry zu, dessen Key- und Value-Eigenschaften die beiden Hälften des Paares offenlegen.
Wenn das Programm ausgeführt wird, gibt es jeden Schlüssel neben seinem Wert aus, zum Beispiel 101 – JavaDa eine Hashtabelle die Einfügereihenfolge nicht beibehält, können die Paare in einer anderen Reihenfolge erscheinen, als sie hinzugefügt wurden. Um nur die Schlüssel zu lesen, durchlaufen Sie die Schlüssel-Sammlung, und um nur die Werte zu lesen, durchlaufen Sie stattdessen die Werte-Sammlung.
C# Hashtabellenmethoden und -eigenschaften
Die Hashtable-Klasse stellt eine kleine Anzahl von Methoden und Eigenschaften bereit, die nahezu alle benötigten Aufgaben abdecken – vom Hinzufügen und Entfernen von Paaren bis hin zur Überprüfung der Zugehörigkeit und dem Zählen von Elementen. Die wichtigsten Methoden sind unten aufgeführt.
| Member | Typ | Beschreibung |
|---|---|---|
| Add(key, value) | Methodik | Fügt ein neues Schlüssel-Wert-Paar ein; der Schlüssel muss eindeutig sein. |
| Entfernen (Schlüssel) | Methodik | Löscht das Element, das dem angegebenen Schlüssel entspricht. |
| Klar() | Methodik | Entfernt alle Schlüssel-Wert-Paare aus der Hashtabelle. |
| ContainsKey(key) | Methodik | Gibt „true“ zurück, wenn der angegebene Schlüssel vorhanden ist. |
| EnthältWert(Wert) | Methodik | Gibt „true“ zurück, wenn der angegebene Wert vorhanden ist. |
| Zu Zählen | Eigenschaft | Gibt die Anzahl der gespeicherten Schlüssel-Wert-Paare zurück. |
| Tasten | Eigenschaft | Gibt eine Sammlung aller Schlüssel zurück. |
| Werte | Eigenschaft | Gibt eine Sammlung aller Werte zurück. |
Da jeder Schlüssel gehasht wird, können ContainsKey und der Indexer ein Element in nahezu konstanter Zeit finden, was eine Hashtabelle so nützlich für schnelle Suchvorgänge macht.
Unterschied zwischen Hashtabelle und Wörterbuch in C#
Eine Hashtabelle und ein Wörterbuch speichern beide Schlüssel-Wert-Paare und gehören beide zur größeren Familie der C#-Datentypen. produktauswahlDer entscheidende Unterschied liegt in der Typsicherheit, und dieser Unterschied bestimmt, welche Variante Sie in neuem Code verwenden sollten.
- Typensicherheit: Eine Hashtabelle speichert jeden Schlüssel und Wert als Objekt, während ein Wörterbuch ist generisch, daher überprüft der Compiler die verwendeten Typen.
- Namespace: Hashtable befindet sich in System.Collections, Dictionary hingegen in System.Collections.Generic.
- Boxing: Eine Hashtabelle speichert Werttypen wie int in einer Box, während ein generisches Wörterbuch sie direkt speichert und so diesen Aufwand vermeidet.
- Eigenschaften: Ein Wörterbuch ist in der Regel schneller, da beim Lesen eines Wertes keine Rückumwandlung vom Objekt erforderlich ist.
- Gewindesicherheit: Hashtable bietet die SyncEine chronisierte Wrapper-Funktion für einen Schreiber mit vielen Lesern, während paralleler Code üblicherweise ConcurrentDictionary verwendet.
Für jedes neue Projekt ist das generische Dictionary die empfohlene Wahl, die nicht-generische Hashtable findet sich hauptsächlich in älterem Code.





