19.5 SortedList


Put simply, a SortedList is a Hashtable which is sorted by the keys. Like a Hashtable , it is accessible by both its keys and values. The API documentation describes a SortedList as a hybrid between a Hashtable and an Array . It behaves like a Hashtable when accessed via a key. It behaves like an Array when accessed via its GetByIndex method.

If you do not need to access elements in a SortedList via its indices, then use a Hashtable rather than a SortedList because the sorting has a performance implication , especially if you do not need that functionality.

The program below demonstrates how a SortedList can be used. The output is interspersed with the code to show the outputs of the different sections.

 1: using System;  2: using System.Collections;  3:  4: public class TestClass{  5:   public static void Main(){  6:  7:     SortedList sl = new SortedList();  8:     sl.Add("A", "apple");  9:     sl.Add("E", "eggplant"); 10:     sl.Add("B", "banana"); 11:     sl.Add("C", "coconut"); 12:     PrintCollection1(sl); 13: 

Output:

 Key:A Value:apple Key:B Value:banana Key:C Value:coconut Key:E Value:eggplant 

Notice that, unlike a Hashtable , the elements in a SortedList are always dynamically sorted by the key every time a new element is inserted.

 14:     Console.WriteLine 15:       ("Index of key B:" +sl.  IndexOfKey  ("B")); 16:     Console.WriteLine 17:       ("Index of value apple:"            +sl.  IndexOfValue  ("apple")); 18: 

Output:

 Index of key B: 1 Index of value apple: 0 

The IndexOfKey and IndexOfValue methods are demonstrated above.

 19:     sl.Add("D", "durian"); 20:     PrintCollection1(sl); 

Output:

 Key:A Value:apple Key:B Value:banana Key:C Value:coconut Key:D Value:durian Key:E Value:eggplant 

When a new key/value pair is added, the indices of all elements are updated as sorting is performed again.

 21:   } // end main 22: 23:   // 1st way to do it 24:   public static void PrintCollection1 (SortedList s){ 25:     IDictionaryEnumerator enumerator = s.GetEnumerator(); 26:     while (enumerator.MoveNext()) 27:       Console.WriteLine("Key:"  + enumerator.Key + 28:                        " Value:"+ enumerator.Value); 29:     Console.WriteLine(); 30:   } 31: 32:   // 2nd way to do it 33:   public static void PrintCollection2 (SortedList s){ 34:     for (int i=0; i<s.Count; i++) 35:       Console.WriteLine("Key:"  + s.  GetKey  (i) + 36:                        " Value:"+ s.  GetByIndex  (i)); 37:     Console.WriteLine(); 38:   } 39: } 

Both PrintCollection1 and PrintCollection2 are functionally identical. Since the elements in a SortedList are indexed, you can use the GetByIndex and GetKey methods to retrieve a value or key by its index respectively (lines 35 “ 36).

A SortedList has the following public properties “ Count , Keys , Values ; and the following methods “ ContainsKey , ContainsValue , Remove . These properties and methods are used in exactly the same way as in a Hashtable class and are therefore not included in this example again.



From Java to C#. A Developers Guide
From Java to C#: A Developers Guide
ISBN: 0321136225
EAN: 2147483647
Year: 2003
Pages: 221
Authors: Heng Ngee Mok

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net