Dictionary是.net2.0中新加入的一個類,是一個泛型類。通常我們可以用ArrayList,Queue,hashtable來存儲不同類型的數據,但這些原因都是因爲ArrayList,Queue和HashTable實際上封裝的是Object類型的值,當我們存儲不同的值的時候,系統會自動將其進行封箱,拆箱操作。以上說來,這些有點類似於php等弱類型語言。而Dictionary則可以將數據的類型推遲到客戶端代碼處理,這裏就不累述(以後會詳細瞭解一下泛型類的特點以及用法)
接下來直接看代碼:
2using System.Collections.Generic;
3using System.Text;
4
5using System.Collections;
6
7namespace Practice
8{
9 public class Cs_Dictionary
10 {
11 private Dictionary<object,object> myDictionary = null;
12
13 public Cs_Dictionary()
14 {
15 myDictionary = new Dictionary<object, object>();
16 myDictionary.Add("key2",2);
17 myDictionary.Add("key1", 1);
18 myDictionary.Add("key3", "a");
19 myDictionary.Add("key4", "b");
20 }
21
22 public Cs_Dictionary(Dictionary<object,object> _myDictionary)
23 {
24 myDictionary = _myDictionary;
25 }
26
27 public void PrintDictionary()
28 {
29 //Dictionary排序,Dictionary本身是一個無序的集合,檢索其中的信息時輸出的順序是按照添加時的順序輸出的。
30 Console.WriteLine("Print element in the Dictionary:");
31 foreach(KeyValuePair<object,object> keyPair in myDictionary)
32 {
33 Console.Write("{0}:{1}/n",keyPair.Key,keyPair.Value);
34 }
35
36 //如果排序的話,可以通過其他的方式來實現,例如ArrayList
37
38 ICollection collection = myDictionary.Keys;
39 ArrayList al = new ArrayList(collection);
40 //按照升序進行排列
41 al.Sort(new MyComparer(true));
42 Console.Write("Print element with descing sort:/n");
43 foreach (object obj in al)
44 {
45 Console.Write("{0}:{1}/n", obj.ToString(), myDictionary[obj]);
46 }
47
48 //按照降序進行排列
49 al.Sort(new MyComparer(false));
50 Console.Write("Print element with ascing sort:/n");
51 foreach (object obj in al)
52 {
53 Console.Write("{0}:{1}/n", obj.ToString(), myDictionary[obj]);
54 }
55 Console.ReadLine();
56 }
57
58 public class MyComparer : IComparer
59 {
60 private int sort;
61
62 //如果fl爲true,說明是升序排列,否則按照降序進行排列
63 public MyComparer(bool fl)
64 {
65 if (fl)
66 {
67 Sort = 1;
68 }
69 else
70 {
71 Sort = -1;
72 }
73 }
74
75 public int Sort
76 {
77 get{return sort;}
78 set{sort=value;}
79 }
80
81 public int Compare(object x, object y)
82 {
83 return new CaseInsensitiveComparer().Compare(x.ToString(),y.ToString())*Sort;
84 }
85 }
86
87 }
88}