Csharp/C Sharp/Collections Data Structure/Hashtable
Содержание
- 1 Add value to Hashtable and loop through the value key pairs
- 2 Compares the efficiency of the hash map implementation with the tree map
- 3 Demonstrate Hashtable
- 4 Enumerating a hash table collection
- 5 Get IDictionaryEnumerator enumerator from Hashtable
- 6 illustrates the use of a Hashtable
- 7 illustrates the use of the Hashtable methods
- 8 Implement GetHashCode method and store it in a hashtable
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>