Solved

Comparing Hashtables

Posted on 2003-10-23
5
2,473 Views
Last Modified: 2012-05-04
Does anyone know how to compare two hashtables?

Hashtable ht1 = new Hashtable();
ht1.Add( "exampleKey", "exampleValue" );

Hashtable ht2 = new Hashtable();
ht2.Add( "exampleKey", "exampleValue" );

// This returns false
ht1.Equals( ht2 );
0
Comment
Question by:chadboyer
  • 2
  • 2
5 Comments
 
LVL 11

Expert Comment

by:vo1d
ID: 9609713
it depends on what you wanna compare.
if you wann check if they are euqal you can check if the dimensions are the same at first.
if the dimensions are the same, you can doublecheck the specific elements to each other.
do you mean that?
0
 

Author Comment

by:chadboyer
ID: 9609873
I want to compare the dimensions and the elements.  I was just hoping that ht1.Equals( ht2 ) would do the work for me.  But it doesn't.
0
 
LVL 22

Accepted Solution

by:
_TAD_ earned 125 total points
ID: 9609957


ht1.Equals(ht2) checks to see if the ht1 and ht2 variables refer to the same object.


Hastable ht1 = new Hashtabl();
...
..    Fill Hashtable
.

Hashtable ht2 = ht1;

ht1.Equals(ht2)   //  TRUE


This is because ht1 and ht2 really are the same object


Hastable ht1 = new Hashtabl();
Hastable ht2 = new Hashtabl();
ht1.Equals(ht2) // FALSE

you have two distinct objects here ( two "new" statements means two unique obects)


0
 

Author Comment

by:chadboyer
ID: 9610030
I wrote my own Hashtable compare function.  Thanks anyway...
0
 
LVL 22

Expert Comment

by:_TAD_
ID: 9610174


here is some code to compare hashtable values and keys



                  Hashtable ht1 = new Hashtable();

                  ht1.Add("1","one");
                  ht1.Add("2","two");
                  ht1.Add("3","three");
                  ht1.Add("4","four");


                  Hashtable ht2 = new Hashtable();

                  ht2.Add("1","one");
                  ht2.Add("2","two");
                  ht2.Add("3","three");
                  ht2.Add("4","four");

                  IDictionaryEnumerator myEnum = ht1.GetEnumerator();
            
                  bool isSame = true;

                  while ( myEnum.MoveNext() )
                        if (ht2.ContainsKey(myEnum.Key))
                        {
                              if (ht1[myEnum.Key]!=ht2[myEnum.Key])
                              {
                                    isSame = false;
                                    break;
                              }                              
                        }
                        else
                        {
                              isSame = false;
                              break;
                        }

                  Console.WriteLine("Hashtables ht1 & ht2 are {0}the same", (isSame)?"":"NOT ");
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction                                                 Was the var keyword really only brought out to shorten your syntax? Or have the VB language guys got their way in C#? What type of variable is it? All will be revealed.   Also called…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

929 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now