Csharp/C Sharp/Collections Data Structure/Hashtable

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Add value to Hashtable and loop through the value key pairs

<source lang="csharp"> using System; using System.Collections; public class HashPut {

 public static void Main( ) {
   String[] identifiers ={"A","B","C","D","E","F","G","H","I","J","K","L"}; 
   String[] types = {"1","2","3","4","5","6","7","8","9","10","11","12"}; 
   Hashtable table = new Hashtable(23);
   
   for(int i = 0; i < identifiers.Length; i++) 
     table.Add(identifiers[i], types[i]);
   
   Console.WriteLine("The value of F is {0}",table["F"]);
   Console.WriteLine("The keys are:");
   
   foreach (DictionaryEntry entry in table) 
     Console.Write("{0} ", entry.Key);
  }

}


      </source>


Compares the efficiency of the hash map implementation with the tree map

<source lang="csharp"> using System; using System.Collections; public class CompareMaps {

 public const int MAX  = 50000000;
 public static String time(IDictionary map) {
   Object value = null;
   long starttime = Environment.TickCount;
   for (int i = 0; i < MAX; i++) {
       value = map[i];
   } 
   long stoptime = Environment.TickCount;
   return value + " took " + (stoptime - starttime);
 }          
 
 public static void Main(String[] args) {
   int SIZE = 1000;
   IDictionary hash = new Hashtable(2*SIZE);
   IDictionary tree = new SortedList();
   
   Random random = new Random();
   int i = random.Next(5000000);
   
   for (int j = 0; j < SIZE; j++) {
      if(!hash.Contains(i))
         hash.Add(i, i);
      if(!tree.Contains(i))
         tree.Add(i, i);
   }
   Console.WriteLine("Hash for {0}", time(hash));
   Console.WriteLine("Tree for {0}", time(tree));
 }

}

      </source>


Demonstrate Hashtable

<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852

  • /

// Demonstrate Hashtable.

using System; using System.Collections;

public class HashtableDemo {

 public static void Main() { 
   // Create a hash table. 
   Hashtable ht = new Hashtable(); 
    
   // Add elements to the table 
   ht.Add("house", "Dwelling"); 
   ht.Add("car", "Means of transport"); 
   ht.Add("book", "Collection of printed words"); 
   ht.Add("apple", "Edible fruit"); 

   // Can also add by using the indexer. 
   ht["tractor"] = "farm implement"; 

   // Get a collection of the keys. 
   ICollection c = ht.Keys; 

   // Use the keys to obtain the values. 
   foreach(string str in c) 
     Console.WriteLine(str + ": " + ht[str]); 
 } 

}


      </source>


Enumerating a hash table collection

<source lang="csharp"> using System; using System.Collections; class Test{

 public static void Main() {
      Hashtable ht = new Hashtable(10);
   
      // Add strings to the hashtable associated with a
      // key value (integer).
   
      ht.Add( 100, "Z");
      ht.Add( 200, "A");
      ht.Add( 300, "B");
      ht.Add( 400, "S");
      ht.Add( 500, "G");
   
      foreach ( DictionaryEntry de in ht ) {
        Console.WriteLine( "Entry Key {0} Value {1}", de.Key, de.Value );
      }
 }

}


      </source>


Get IDictionaryEnumerator enumerator from Hashtable

<source lang="csharp">

using System; using System.Collections; public class Starter {

   public static void Main() {
       Hashtable zHash = new Hashtable();
       zHash.Add("one", 1);
       zHash.Add("two", 2);
       zHash.Add("three", 3);
       zHash.Add("four", 4);
       IDictionaryEnumerator e = zHash.GetEnumerator();
       while (e.MoveNext()) {
           Console.WriteLine(
               "{0} {1}",
               e.Key, e.Value);
       }
   }

}

      </source>


illustrates the use of a Hashtable

<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110

  • /

/*

 Example11_6.cs illustrates the use of a Hashtable
  • /

using System; using System.Collections; public class Example11_6 {

 public static void Main()
 {
   // create a Hashtable object
   Hashtable myHashtable = new Hashtable();
   // add elements containing US state abbreviations and state
   // names to myHashtable using the Add() method
   myHashtable.Add("AL", "Alabama");
   myHashtable.Add("CA", "California");
   myHashtable.Add("FL", "Florida");
   myHashtable.Add("NY", "New York");
   myHashtable.Add("WY", "Wyoming");
   // display the Count property
   Console.WriteLine("myHashtable.Count = " + myHashtable.Count);
   // lookup the state name for "CA"
   string myState = (string) myHashtable["CA"];
   Console.WriteLine("myState = " + myState);
   // display the keys for myHashtable using the Keys property
   foreach (string myKey in myHashtable.Keys)
   {
     Console.WriteLine("myKey = " + myKey);
   }
   // display the values for myHashtable using the Values property
   foreach(string myValue in myHashtable.Values)
   {
     Console.WriteLine("myValue = " + myValue);
   }
 }

}


      </source>


illustrates the use of the Hashtable methods

<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110

  • /

/*

 Example11_7.cs illustrates the use of the Hashtable methods
  • /

using System; using System.Collections; public class Example11_7 {

 public static void Main()
 {
   // create a Hashtable object
   Hashtable myHashtable = new Hashtable();
   // add elements containing US state abbreviations and state
   // names to myHashtable using the Add() method
   myHashtable.Add("AL", "Alabama");
   myHashtable.Add("CA", "California");
   myHashtable.Add("FL", "Florida");
   myHashtable.Add("NY", "New York");
   myHashtable.Add("WY", "Wyoming");
   // display the keys for myHashtable using the Keys property
   foreach (string myKey in myHashtable.Keys)
   {
     Console.WriteLine("myKey = " + myKey);
   }
   // display the values for myHashtable using the Values property
   foreach(string myValue in myHashtable.Values)
   {
     Console.WriteLine("myValue = " + myValue);
   }
   // use the ContainsKey() method to check if myHashtable
   // contains the key "FL"
   if (myHashtable.ContainsKey("FL"))
   {
     Console.WriteLine("myHashtable contains the key FL");
   }
   // use the ContainsValue() method to check if myHashtable
   // contains the value "Florida"
   if (myHashtable.ContainsValue("Florida"))
   {
     Console.WriteLine("myHashtable contains the value Florida");
   }
   // use the Remove() method to remove FL from myHashtable
   Console.WriteLine("Removing FL from myHashtable");
   myHashtable.Remove("FL");
   // get the number of elements in myHashtable using the Count
   // property
   int count = myHashtable.Count;
   // copy the keys from myHashtable into an array using
   // the CopyTo() method and then display the array contents
   Console.WriteLine("Copying keys to myKeys array");
   string[] myKeys = new string[count];
   myHashtable.Keys.CopyTo(myKeys, 0);
   for (int counter = 0; counter < myKeys.Length; counter++)
   {
     Console.WriteLine("myKeys[" + counter + "] = " +
       myKeys[counter]);
   }
   // copy the values from myHashtable into an array using
   // the CopyTo() method and then display the array contents
   Console.WriteLine("Copying values to myValues array");
   string[] myValues = new string[count];
   myHashtable.Values.CopyTo(myValues, 0);
   for (int counter = 0; counter < myValues.Length; counter++)
   {
     Console.WriteLine("myValues[" + counter + "] = " +
       myValues[counter]);
   }
 }

}

      </source>


Implement GetHashCode method and store it in a hashtable

<source lang="csharp"> using System; using System.Collections; public class GoodCompare {

 public static void Main() {
   Name president = new Name ("A", "B");
   Name first = new Name ("C", "D");
   
   Hashtable m = new Hashtable();
   m.Add(president, "first");
   Console.WriteLine(m.Contains(first));
   Console.WriteLine(m[first]); 
 }

}

public class Name {

 protected String first;
 protected char initial;
 protected String last;
         
 public Name(String f, String l) {
   first = f; 
   last = l; 
 }
 public Name(String f, char i, String l) : this(f,l) {
   initial = i;  
 } 
 public override String ToString() {
   if (initial == "\u0000")
      return first + " " + last;
   else  
      return first + " " + initial + " " + last;
 }
 public override bool Equals(Object o) {
   if (!(o is Name))
      return false;
   Name name = (Name)o;
   return first == name.first && initial == name.initial
            && last == name.last;
 }
 public override int GetHashCode() {
   return first.GetHashCode() + (int)initial 
                            + last.GetHashCode();
 }

}


      </source>