• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2496
  • Last Modified:

Comparing Hashtables

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
chadboyer
Asked:
chadboyer
  • 2
  • 2
1 Solution
 
vo1dCommented:
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
 
chadboyerAuthor Commented:
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
 
_TAD_Commented:


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
 
chadboyerAuthor Commented:
I wrote my own Hashtable compare function.  Thanks anyway...
0
 
_TAD_Commented:


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

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now