HashTable is a non-generic collection in C#. It stores key-value pairs, similar to a general-purpose "dictionary" collection. HashTable is defined in
System. Collections. namespace.
HashTable Calculate the hash code for each key and store it in different buckets internally. Then, when the value is accessed, the hash code is matched against the hash code of the specified key. Therefore, lookup is optimized via HashTable.
In this tutorial, we will learn how to create a HashTable collection in C#.
Before we start creating a HashTable, let us look at some of the notable features of the HashTable collection in C#.
HashTable collection stores key-value pairs.
The hash table is part of the system. Collection namespace in C# and implements the IDictionary interface. The elements of a HashTable are stored as DictionaryEntry objects.
The key of the hash table cannot be empty and is unique. However, the value can be empty or duplicate.
Values in a hash table can be accessed using the keys in the indexer, just like array values.
Keys in HashTable are immutable objects. Each of these key objects provides a hash function.
The typical Hashtable class implements C#'s IDictionary, ICollection, ISerializable, IEnumerable, IDeserializationCallback and ICloneable interfaces.
The elements stored in HashTable can be of the same type or different types.
Keeping these salient features in mind, let us now discuss how to create a hash table in C#.
C#'s HashTable class provides 16 overloaded constructors to create HashTable.
The following table shows the HashTable constructor we will use in this article.
Constructor | describe |
---|---|
Hash table() | Initialize a new, empty instance of the HashTable class with default initial capacity, hash code provider, comparator and load factor. |
Hash table (IDictionary) | Create a new instance of the Hashtable class and initialize it with the contents of the specified dictionary. |
Note- To know more about HashTable class in C#, read our article C#-HashTable class.
Let us look at the steps usually followed to create a HashTable collection in C#.
First, we include the System.collection namespace in our program
using System. Collections;
Next, we create a hash table using the Hashtable class. For this we use the default constructor.
Hashtable hashtable_name = new Hashtable();
Now we can use the "Add()" method to add elements to the HashTable.
So here, we can initialize the entire HashTable while creating a HashTable instance, or we can use the Add() method to add elements to the HashTable one by one.
The following program demonstrates creating a HashTable in C#.
using System; using System. Collections; class MyHashTable { // Main Method static public void Main() { // Create hashtable using the default constructor Hashtable indianNumberSystem = new Hashtable(); //add a key/value pair using the Add() method indianNumberSystem.Add(1,"Ones"); indianNumberSystem.Add(10,"Tens"); indianNumberSystem.Add(100,"Hundred"); indianNumberSystem.Add(1000,"Thousand"); indianNumberSystem.Add(10000,"Ten Thousand"); indianNumberSystem.Add(100000,"Lac"); indianNumberSystem.Add(1000000,"Ten Lac"); indianNumberSystem.Add(10000000,"Crore"); //display HashTable contents Console.WriteLine("Key, Value pairs from Indian Number System:"); foreach(DictionaryEntry ele1 in indianNumberSystem){ Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value); } } }
In the above program, we define a HashTable instance using the default constructor. We then add the key/value pairs to the HashTable using the Add() method. Finally, use a for-each loop to print out the contents of the HashTable one by one.
The above program generates the following output.
Key, Value pairs from Indian Number System: 100 (Hundred) 1000 (Thousand) 10 (Tens) 1000000 (Ten Lac) 100000 (Lac) 10000000 (Crore) 10000 (Ten Thousand) 1 (Ones)
The program displays a hash table containing the place values of the Indian numeral system. Note that since this is a simple program that creates a hash table and adds content to it, the output is unformatted.
Let’s take another example of creating a HashTable in C#. The following program uses different constructors to create a HashTable.
using System; using System.Collections; class MyHashTable { // Main Method static public void Main() { // Create hashtable without using Add method Hashtable my_hashtable1 = new Hashtable() {{"K1", "New York"}}; // Adding key/value pair in the hashtable using Add() method my_hashtable1.Add("K2", "Paris"); my_hashtable1.Add("K3", "London"); my_hashtable1.Add("K4", "Mumbai"); my_hashtable1.Add("K5", "Berlin"); Console.WriteLine("Key, Value pairs from my_hashtable1:"); foreach(DictionaryEntry ele1 in my_hashtable1){ Console.WriteLine("{0} and {1} ", ele1.Key, ele1.Value); } } }
As we can see in the code above, first we create a HashTable object with a key-value pair. Then we use the add() method of the HashTable class to add elements to the HashTable. Finally, using a for-each loop, iterate over the HashTable object to print each hashTable element (key-value pair).
The above program produces the following output.
Key, Value pairs from my_hashtable1: K2 and Paris K1 and New York K3 and London K4 and Mumbai K5 and Berlin
In the above output, the key-value pairs are displayed in reverse alphabetical order of values. This is the default output of the hash table because we did not provide any code to format the output. The HashTable class provides various methods to organize/format the output, which we will learn in subsequent tutorials.
In this tutorial, we discussed how to create a HashTable collection in C#. HashTable is a non-generic collection of key-value pairs. The keys in the HashTable are unique non-null values. Values can be empty and repeated. We can create a HashTable in C# using the HashTable class provided by Systems. Collection interface and modify it using the various methods provided by this class.
The above is the detailed content of How to create a HashTable collection in C#?. For more information, please follow other related articles on the PHP Chinese website!