Blue Theme Orange Theme Green Theme Red Theme
 
Nevron Chart
Home | Forums | Videos | Advertise | Certifications | Downloads | Blogs | Interviews | Jobs | Beginners | Training
 | Consulting  
Submit an Article Submit a Blog 
 Jump to
Skip Navigation Links
TechnologyExpand Technology
WebsiteExpand Website
Nevron Chart
Search :       Advanced Search »
Home » C# Language » Working with HashTable in C# 2.0

Working with HashTable in C# 2.0

Many a times we need to store more than one dimension data in a list and data may not be an integer or string. This article shows how to use HashTable class to store object type data.

Page Views : 418499
Downloads : 0
Rating :
 Rate it
Level : Beginner
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
 
Team Foundation Server Hosting
Become a Sponsor
Nevron Chart
Become a Sponsor
 Tag Cloud
 Latest Jobs
More ... 
 Latest Interview Questions
More ... 


This is a 3 part tutorial on the HashTable available in .NET 2.0. Part one is here and soon you will get access of  other two part might be some brain storming sessions in the last one. Please download the attached code to see the working sample. 

 

First of all Why HashTable? Answer is very simple. Suppose you have some data, which needs to be stored in two dimensional array and have a link format of Key and Value. For example, a person name and his social security number and we can access there data using a key.

 

A close friend of Hashtable is Array (came from C/C++), it is an instance of System.Array class, but to access data from array you must have an index and that is of int Type. And second you must specify the size of the Array at the time of instantiations.

 

Family contains

  1. ArrayList
  2. Collection
  3. Dictionary ( Hashtable or Maps ).

Dictionaries or Hashtable

Are very sophisticated data structures that allows us to access an element based on some key, which can be of any type.

 

Hashtable in .net

  1. Is member of System.Collections namespace.
  2. Contains15 constructors ( wow, try them all) but you will mostly use.    

        Hashtable _table = new Hashtable(); //Default one

        Hashtable _table2 = new Hashtable(10); // capacity or size.
        Hashtable _table3 = new Hashtable(10, 06); //capacity , loadfactor

Loadfactor this factor helps a lot if you looking for performance, The smaller the load size (fracton of the tashtable full .6 measn 60% full) , the more efficiently our hash table works and the more memory it occupy.           

 

Now have some code

  1. Create a Hashtable 
          

    Hashtable _simpleTable = new Hashtable();

  2. Add some data in it.
        

         _simpleTable.Add("Key1", "Value1");
    _simpleTable.Add("Key2", "Value2");

  3. Get the size.

    _simpleTable.Count; // an int value.

  4.  Now to fetch data
  • Create an object of IDictonaryEnumerator , this is an interface that creates an enumerator and customized for    Dictonary  objects.
        
    IDictionaryEnumerator
    _enumerator = _simpleTable.GetEnumerator();
  • while (_enumerator.MoveNext())
    {
       _string += _enumerator.Key + " "
    ;
       _string += _enumerator.Value + "\n"
    ;
    }
  • and that all you fetched the Data !!!
  • clear hash table.. 

    _simpleTable.Clear();
  • Search for a specific key : remember its value type when used 


    if
    (_simpleTable.ContainsKey("Key1"))
    {
        
    Console.WriteLine("Key1 is present");
    }
  • Search for a specific key : remember its value type when used


    if
    (_simpleTable.ContainsValue("Value1"))
    {
         Console.WriteLine("Value1 is present"
    );
    }
  •  Have all this done and you will get more stuff in the next post.

  •  Try this and Cheers!!!!!

Thanks
Pradeep
Find the list of my all articles at http://pradeepsarticles.blogspot.com/2010/05/list-of-articles-posted-on-c-shap.html

Comment Request!
Thank you for reading this post. Please post your feedback, question, or comments about this post Here.
Login to add your contents and source code to this article
 [Top] Rate this article
 
 About the author
 
Pradeep Tiwari
Working at e-Zest solutions Pvt Ltd(www.e-Zest.net/)
Looking for C# Consulting?
C# Consulting is founded in 2002 by the founders of C# Corner. Unlike a traditional consulting company, our consultants are well-known experts in .NET and many of them are MVPs, authors, and trainers. We specialize in Microsoft .NET development and utilize Agile Development and Extreme Programming practices to provide fast pace quick turnaround results. Our software development model is a mix of Agile Development, traditional SDLC, and Waterfall models.
Click here to learn more about C# Consulting.
 
Introducing MaxV - one click. infinite control. Hyper-V Hosting from MaximumASP.
Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Dynamic PDF
ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
Discover the top 5 tips for understanding .NET
Ricky Leeks presents the top 5 tips for understanding .NET Interoperability. Learn more.
Nevron Chart for .NET 2010.1 Now Available
The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
ASP.NET 4 Hosting
Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites – Click Here!
 
 Post a Feedback, Comment, or Question about this article
Subject:
Comment:
DevExpress Free UI Controls
Become a Sponsor
 Comments
Same here by mi On March 2, 2007
I know the result because I have ran into the same situation before -- which is the reason I'm here. Do you have any suggestions how to deal with this situation? I tried to re-instantiate a hashtable -- only to find that the new hashtable I created has the same data I meant to disregard. It has been more than a headache to me. Thanks very much
Reply | Email | Modify 
how to get a value of hash table in windows applications by anand On April 9, 2007
hi... after sorting the hash table values,how i can get that values and the corresponding keys... thanks in advance...
Reply | Email | Modify 
hash tables by anand On April 11, 2007
hi sir, i stored some key and values in hash tables...after that i print these values it will display randomly...how these values are stored in hash tables... thanks and regards, P.Anand B.E.,
Reply | Email | Modify 
Re: hash tables by Pradeep On May 17, 2007

u can`t sort the value in the hashtable, there is no such function.

best way u can create a function which will sort ur hashtable values according to ur choice

1. according to key

2. according to value.

 

and second option is transform ur hashtable into 2D generic object which is derived from IEquatable,

 

thanks

Pradeep

Reply | Email | Modify 
Re: Re: hash tables by Gavril On October 24, 2007

Sorting a hashtable is confusing.

The way hashtables are designed is so they can be accessed very fast (in O(1) actually). But the key-value pairs will NOT be accessed in the same order as they are added.

Example:

//add 3 keys

hash.Add("txt","notepad");

hash.Add("pdf","acrobat");

hash.Add("mp3","winamp");

//iterate

(foreach DictionaryEntry de in hash)  // print key - value

will print the key-value pairs in a non-predictable order.

You may want to read about hashing in more detail, it is a basic of computer science.

If you need to sort your hash - don't use a hash - use a dictionary! (it's slower to access - O(n)).

Reply | Email | Modify 
how to modify an enumerator by taimoor On April 21, 2009
private static Hashtable usrtm = Hashtable.Synchronized(new Hashtable()); lock (usrtm.SyncRoot) { usrtm.Add(val2, (object)DateTime.Now); System.Threading.Thread.Sleep(1000); } lock (usrtm.SyncRoot) { foreach (string s in usrtm.Keys) //here i receive an exception collection modified enumeration operation can't be performed { if (s == st1) { usrtm[s] = (object)DateTime.Now; MessageBox.Show("in receive"); } } }
Reply | Email | Modify 
Hashtable to Array by Japan On June 9, 2009
Suppose I have a hashtable like below
{"a":0,"a":1,"a":2,"a":3,"a":4}

now I want a int[] = {0,1,2,3,4} from the above hashtable.

without having for loop can we do it by some another way????

thanks
Reply | Email | Modify 
Re: Hashtable to Array by Pradeep On June 10, 2009

see this code,  is this you are looking for. 

static void Main(string[] args)

{

Hashtable ht = new Hashtable();

ht.Add("India", "new delhi");

ht.Add("Pak", "Ishalamabad");

ht.Add("China", "Bejing");

ICollection icol = ht.Values;

ArrayList list = new ArrayList();

list.AddRange(icol);

string[] str = list.ToArray(typeof(System.String)) as string[];

}



 

Reply | Email | Modify 
Re: Re: Hashtable to Array by Japan On June 11, 2009
yes

thanks dude...
Reply | Email | Modify 
Re: Hashtable to Array by Pradeep On June 10, 2009

static void Main(string[] args)

{

Hashtable ht = new Hashtable();

ht.Add("India", "new delhi");

ht.Add("Pak", "Ishalamabad");

ht.Add("China", "Bejing");

ICollection icol = ht.Values;

ArrayList list = new ArrayList();

list.AddRange(icol);

string[] str = list.ToArray(typeof(System.String)) as string[];

}

Reply | Email | Modify 
Re: Re: Hashtable to Array by Bruce On November 5, 2009

This worked for me and copied directly from the hashtable  an appropriate array:

Hashtable ht1 = new Hashtable();

ht1.Add(1, "New Delhi");

ht1.Add(2, "Ishalamabad");

ht1.Add(5, "Bejing");

//get count for ht1

Console.WriteLine("count = {0}", ht1.Count);

//create string array using ht1.Count

string[] list1 = new string[ht1.Count];

//copy ht1.Values to array list1

ht1.Values.CopyTo(list1, 0);

//display eash string item in list1

foreach (string obj in list1)

Console.WriteLine("{0}", obj);

//create int array using ht1.Count

int[] list2 = new int[ht1.Count];

//copy ht1.Keys to array list2

ht1.Keys.CopyTo(list2, 0);

//display each int item in list2

foreach (int obj in list2)

Console.WriteLine("{0}", obj);

I am using C# 2008 Express Edition

Reply | Email | Modify 
Good One. Please help me... by Shibu On June 11, 2009
I created a HashTable. Each element or index of HashTable item is a reference to other object. Next step, I removed the index from HashTable using its property. But here the problem is only the reference is deleted but the Object still exists in memory. How to deletethat memory location?

Thanks
Shibu Mathew
Reply | Email | Modify 
Hash Tables by Bruce On November 5, 2009
I found this helpful.  How do I find the other two articles in the tutorial?
Reply | Email | Modify 
how to convert data table to hash table by Aravind On June 3, 2010
how to convert data table to hash table and how to project hash table values in grid view
Reply | Email | Modify 
nested Hashtable by ammar On October 20, 2010
hello, would you please answer the following about nested hashtable:
1- after creating the nested hashtable can i give the inner hashtable a name
to use it as an object?
2- can i access the inner hash(it's key and value) using the object of the outer hash?
3-how can i print the nested hash(inner+outer) into a text file

please,looking to hearing from you
Reply | Email | Modify 
Mindcracker MVP Summit 2012
 © 2012  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.