Mega Code Archive

 
Categories / C# / Collections Data Structure
 

Implements IDictionary by using a ListDictionary while the collection is small, and then switching to a Hashtab

using System; using System.Collections; using System.Collections.Specialized; public class SamplesHybridDictionary  {    public static void Main()  {       HybridDictionary myCol = new HybridDictionary();       myCol.Add( "A", "1.49" );       myCol.Add( "B", "1.29" );       myCol.Add( "C", "1.49" );       PrintKeysAndValues1( myCol );       PrintKeysAndValues2( myCol );       PrintKeysAndValues3( myCol );       DictionaryEntry[] myArr = new DictionaryEntry[myCol.Count];       myCol.CopyTo( myArr, 0 );       for ( int i = 0; i < myArr.Length; i++ )          Console.WriteLine( "   {0,-25} {1}", myArr[i].Key, myArr[i].Value );       if ( myCol.Contains( "A" ) )          Console.WriteLine( "The collection contains the key A." );       myCol.Remove( "A" );       PrintKeysAndValues1( myCol );       myCol.Clear();    }    public static void PrintKeysAndValues1( IDictionary myCol )  {       foreach ( DictionaryEntry de in myCol )          Console.WriteLine( "   {0,-25} {1}", de.Key, de.Value );    }    public static void PrintKeysAndValues2( IDictionary myCol )  {       IDictionaryEnumerator myEnumerator = myCol.GetEnumerator();       while ( myEnumerator.MoveNext() )          Console.WriteLine( "   {0,-25} {1}", myEnumerator.Key, myEnumerator.Value );    }    public static void PrintKeysAndValues3( HybridDictionary myCol )  {       String[] myKeys = new String[myCol.Count];       myCol.Keys.CopyTo( myKeys, 0 );       for ( int i = 0; i < myCol.Count; i++ )          Console.WriteLine( "   {0,-5} {1,-25} {2}", i, myKeys[i], myCol[myKeys[i]] );    } }