Hashtable
In this article, We will learn about the concept of Hashtable in C#.
- Hashtable is the non-generic collection that stores data in key-value pair, same as generic Dictionary collection.
- In the Hashtable data, key-value pairs are organized based on the key’s hash code.
- A key is used to access value from the Hashtable.
- Basically, a Hashtable comes into the picture when we need to access an element by the key.
- Each element in the Hashtable has a key-value pair.
Hashtable Characteristics
- Hashtable stores elements in the form of key-value pairs.
- Hashtable comes under the System.Collection namespace.
- Hashtable implements the IDictionary interface.
- Hashtable key must be unique and cannot be null or empty.
- A value in a Hashtable can be null or empty or duplicate.
- A value in the Hashtable can be accessed by passing the associated key in the indexer.
- An element in the Hashtable is stored as DictionaryEntry objects.
There are a number of methods and properties available in Hashtable. So First, we will see the Method of Hashtable below,
- public virtual void Add(object key, object value):
This method is used to add an element with the specified key-value pairs.
2. public virtual void Remove(object key):
This method is used to remove an element with the specified key from the Hashtable.
3. public virtual void Clear():
This method is used when we want to remove all elements from the Hashtable.
4. public virtual bool ContainsKey(object key):
This method is used to determine whether Hashtable contains a specified key or not.
5. public virtual bool ContainsValue(object value):
This method is used to determine whether Hashtable contains a specified value or not.
Now, we will see the Properties of Hashtable as below,
- Count:
Get the total number of elements available in Hashtable.
2. Keys:
Gets an ICollection containing the key in the Hashtable.
3. Values:
Gets an ICollection containing the value in the Hashtable.
4. Item:
Gets or sets the value associated with the specified key.
5. IsFixedSize:
This property will get a value indicating whether the Hashtable has a fixed size.
6. IsReadOnly:
This Property will get a value indicating whether the Hashtable is read-only.
Example of Create Hashtable and Add element.
using System; using System.Collections; namespace HashtableExample { class Program { static void Main(string[] args) { Console.WriteLine("\n Hashtable Example"); //Create Hashtable object Hashtable Phones = new Hashtable(); //Add() method of Hashtable Phones.Add("Apple", "Iphone 11, Iphone 11 pro, Iphone 12, Iphone 12 mini"); Phones.Add("Samsung", "Note 9, Note 10, Galaxy s20, Galaxy s20 ultra"); Phones.Add("Realme", "Realme 6, Realme 6 pro, Realme 7, Realme 7i, Realme GT neo2"); //Phones.Add("Realme","Realme 1"); it will allow only unique key, so it will give a compile time error Phones.Add("Vivo", ""); //Hashtable allow a null or empty or duplicate value //Display all Hashtable elements Console.WriteLine("\n Display Hastable element after Adding \n"); foreach(DictionaryEntry Phone in Phones) { Console.WriteLine(" Key : {0} , Value : {1}",Phone.Key,Phone.Value); } } } }
The output of an above Example is as below,
In the above example, We can see that we are trying to add a duplicate key to Hashtable. But, As we know that the Hashtable will not allow adding a duplicate or null key, It allows only a unique key. But, we can add the null or empty, or duplicate value of an element in Hashtable.
Although, if we are trying to add a duplicate or null key. Then, it will give a compile-time error as below,
Example of Remove element from Hashtable,
//Remove Method of Hashtable if (Phones.ContainsKey("Vivo")) //It will chek whether it will contain an element of specified key. { Phones.Remove("Vivo"); //It will remove an element that contain a specified key "Vivo" } //Display all Hashtable elements after Remove an element Console.WriteLine("\n Display Hastable element after Remove \n"); foreach (DictionaryEntry Phone in Phones) { Console.WriteLine(" Key : {0} , Value : {1}", Phone.Key, Phone.Value); }
The Output of the above example,
In the above example, we use the ContainsKey() method for checking the availability of a specified key in the Hashtable.
Example of how to update the element value,
//Update the value of specified key Phones["Apple"] = "Iphone 13 pro max"; //Display all Hashtable elements after updating an element Console.WriteLine("\n Display Hastable element after Update \n"); foreach (DictionaryEntry Phone in Phones) { Console.WriteLine(" Key : {0} , Value : {1}", Phone.Key, Phone.Value); }
The output of the above example is as below,
Advantages
- The main advantage of Hashtable is synchronization.
- It allows the execution time of lookup, retrieve, and set operations to remain nearly constant, even for a large number of sets.
- Hashtable has the ability to locate the element quickly even when the amount of data is huge.
- There is no requirement to scan through the entire data set to find an element or to sort the elements in order to perform a Binary search.
- The key can be hashed and the value’s location can be found directly if the key for the desired element value is known.
Disadvantages
- Hashtable collisions are practically unavoidable. when hashing a random subset of a large set of possible keys.
- Hashtable becomes quite inefficient when there are many collisions occur.
I hope this article will help you to understand the concept of HAshtable in C#.
Thank you.