C# System.Collections.Generic.Dictionary


  1 using System;
  2 using System.Collections.Generic;
  3 
  4 public class Example
  5 {
  6     public static void Main()
  7     {
  8         // Create a new dictionary of strings, with string keys.
  9         //
 10         Dictionary<string, string> openWith = 
 11             new Dictionary<string, string>();
 12 
 13         // Add some elements to the dictionary. There are no 
 14         // duplicate keys, but some of the values are duplicates.
 15         openWith.Add("txt", "notepad.exe");
 16         openWith.Add("bmp", "paint.exe");
 17         openWith.Add("dib", "paint.exe");
 18         openWith.Add("rtf", "wordpad.exe");
 19 
 20         // The Add method throws an exception if the new key is 
 21         // already in the dictionary.
 22         try
 23         {
 24             openWith.Add("txt", "winword.exe");
 25         }
 26         catch (ArgumentException)
 27         {
 28             Console.WriteLine("An element with Key = \"txt\" already exists.");
 29         }
 30 
 31         // The Item property is another name for the indexer, so you 
 32         // can omit its name when accessing elements. 
 33         Console.WriteLine("For key = \"rtf\", value = {0}.", 
 34             openWith["rtf"]);
 35 
 36         // The indexer can be used to change the value associated
 37         // with a key.
 38         openWith["rtf"] = "winword.exe";
 39         Console.WriteLine("For key = \"rtf\", value = {0}.", 
 40             openWith["rtf"]);
 41 
 42         // If a key does not exist, setting the indexer for that key
 43         // adds a new key/value pair.
 44         openWith["doc"] = "winword.exe";
 45 
 46         // The indexer throws an exception if the requested key is
 47         // not in the dictionary.
 48         try
 49         {
 50             Console.WriteLine("For key = \"tif\", value = {0}.", 
 51                 openWith["tif"]);
 52         }
 53         catch (KeyNotFoundException)
 54         {
 55             Console.WriteLine("Key = \"tif\" is not found.");
 56         }
 57 
 58         // When a program often has to try keys that turn out not to
 59         // be in the dictionary, TryGetValue can be a more efficient 
 60         // way to retrieve values.
 61         string value = "";
 62         if (openWith.TryGetValue("tif", out value))
 63         {
 64             Console.WriteLine("For key = \"tif\", value = {0}.", value);
 65         }
 66         else
 67         {
 68             Console.WriteLine("Key = \"tif\" is not found.");
 69         }
 70 
 71         // ContainsKey can be used to test keys before inserting 
 72         // them.
 73         if (!openWith.ContainsKey("ht"))
 74         {
 75             openWith.Add("ht", "hypertrm.exe");
 76             Console.WriteLine("Value added for key = \"ht\": {0}", 
 77                 openWith["ht"]);
 78         }
 79 
 80         // When you use foreach to enumerate dictionary elements,
 81         // the elements are retrieved as KeyValuePair objects.
 82         Console.WriteLine();
 83         foreach( KeyValuePair<string, string> kvp in openWith )
 84         {
 85             Console.WriteLine("Key = {0}, Value = {1}", 
 86                 kvp.Key, kvp.Value);
 87         }
 88 
 89         // To get the values alone, use the Values property.
 90         Dictionary<string, string>.ValueCollection valueColl =
 91             openWith.Values;
 92 
 93         // The elements of the ValueCollection are strongly typed
 94         // with the type that was specified for dictionary values.
 95         Console.WriteLine();
 96         foreach( string s in valueColl )
 97         {
 98             Console.WriteLine("Value = {0}", s);
 99         }
100 
101         // To get the keys alone, use the Keys property.
102         Dictionary<string, string>.KeyCollection keyColl =
103             openWith.Keys;
104 
105         // The elements of the KeyCollection are strongly typed
106         // with the type that was specified for dictionary keys.
107         Console.WriteLine();
108         foreach( string s in keyColl )
109         {
110             Console.WriteLine("Key = {0}", s);
111         }
112 
113         // Use the Remove method to remove a key/value pair.
114         Console.WriteLine("\nRemove(\"doc\")");
115         openWith.Remove("doc");
116 
117         if (!openWith.ContainsKey("doc"))
118         {
119             Console.WriteLine("Key \"doc\" is not found.");
120         }
121     }
122 }
123 
124 /* This code example produces the following output:
125 
126 An element with Key = "txt" already exists.
127 For key = "rtf", value = wordpad.exe.
128 For key = "rtf", value = winword.exe.
129 Key = "tif" is not found.
130 Key = "tif" is not found.
131 Value added for key = "ht": hypertrm.exe
132 
133 Key = txt, Value = notepad.exe
134 Key = bmp, Value = paint.exe
135 Key = dib, Value = paint.exe
136 Key = rtf, Value = winword.exe
137 Key = doc, Value = winword.exe
138 Key = ht, Value = hypertrm.exe
139 
140 Value = notepad.exe
141 Value = paint.exe
142 Value = paint.exe
143 Value = winword.exe
144 Value = winword.exe
145 Value = hypertrm.exe
146 
147 Key = txt
148 Key = bmp
149 Key = dib
150 Key = rtf
151 Key = doc
152 Key = ht
153 
154 Remove("doc")
155 Key "doc" is not found.
156  */
 1 using System;
 2 using System.Collections.Generic;
 3 public class Example
 4 {
 5          public static void Main()
 6          {
 7                //一、创建泛型哈希表,然后加入元素
 8                Dictionary<string, string> oscar = new Dictionary<string, string>();
 9                oscar.Add("哈莉?贝瑞", "《死囚之舞》");
10                oscar.Add("朱迪?丹奇", "《携手人生》");
11                oscar.Add("尼科尔?基德曼", "《红磨坊》");
12                oscar.Add("詹妮弗?康纳利", "《美丽心灵》");
13                oscar.Add("蕾妮?齐维格", "《BJ单身日记》");
14 
15                //二、删除元素
16                oscar.Remove("詹妮弗?康纳利");
17 
18                //三、假如不存在元素则加入元素
19                if (!oscar.ContainsKey("茜茜?斯派克")) oscar.Add("茜茜?斯派克", "《不伦之恋》");
20                
21 
22                //四、显然容量和元素个数
23                Console.WriteLine("元素个数: {0}", oscar.Count);
24 
25                //五、遍历集合
26                Console.WriteLine("74届奥斯卡最佳女主角及其电影:");
27                foreach (KeyValuePair<string, string> kvp in oscar)
28                {
29                       Console.WriteLine("姓名:{0},电影:{1}", kvp.Key, kvp.Value);
30                }
31 
32               //六、得到哈希表中键的集合
33               Dictionary<string, string>.KeyCollection keyColl = oscar.Keys;
34               //遍历键的集合
35               Console.WriteLine("最佳女主角:");
36               foreach (string s in keyColl)
37               {
38                    Console.WriteLine(s);
39               }
40 
41               //七、得到哈希表值的集合
42               Dictionary<string, string>.ValueCollection valueColl = oscar.Values;
43               //遍历值的集合
44               Console.WriteLine("最佳女主角电影:");
45               foreach (string s in valueColl)
46               {
47                    Console.WriteLine(s);
48               }
49 
50               //八、使用TryGetValue方法获取指定键对应的值
51               string slove = string.Empty;
52               if (oscar.TryGetValue("朱迪?丹奇", out slove))
53                      Console.WriteLine("我最喜欢朱迪?丹奇的电影{0}", slove);
54               else
55                      Console.WriteLine("没找到朱迪?丹奇的电影");
56 
57               //九、清空哈希表
58               oscar.Clear();
59               Console.ReadLine();
60        }
61 }
 1 //定义字典
 2                 Dictionary<string, string> d = new Dictionary<string, string>();
 3 
 4                 //添加字典的元素
 5                 for (int i = 0; i < 5; i++)
 6                 {
 7                     d.Add("key" + i, "value" + i);
 8                 }
 9 
10                 //取值/赋值
11                 string val = d["key1"];
12                 d["key1"] = "new value";
13 
14                 //遍历key
15                 foreach (string key in d.Keys)
16                 {
17                     Console.WriteLine("Key = {0}", key);
18                 }
19                 //遍历value
20                 foreach (string v in d.Values)
21                 {
22                     Console.WriteLine("value = {0}", v);
23                 }
24 
25                 //遍历value, Second Method
26                 Dictionary<string, string>.ValueCollection valueColl = d.Values;
27                 foreach (string s in valueColl)
28                 {
29                     Console.WriteLine("Second Method, Value = {0}", s);
30                 }
31 
32                 //遍历字典
33                 foreach (KeyValuePair<string, string> kvp in d)
34                 {
35                     Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
36                 }
37                 //删除元素
38                 d.Remove("key1");
39                 if (!d.ContainsKey("key1"))
40                 {
41                     Console.WriteLine("Key \"key1\" is not found.");
42                 }
43                 //判断键存在
44                 if (d.ContainsKey("key1")) // True 
45                 {
46                     Console.WriteLine("An element with Key = \"key1\" exists.");
47                 }

构造函数 

Dictionary()

初始化 Dictionary 类的新实例,该实例为空且具有默认的初始容量,并使用键类型的默认相等比较器。

Dictionary(IDictionary)

初始化 Dictionary 类的新实例,该实例包含从指定的 IDictionary 中复制的元素并为键类型使用默认的相等比较器。

Dictionary(IDictionary, IEqualityComparer)

初始化 Dictionary 类的新实例,该实例包含从指定的 IDictionary 中复制的元素并使用指定的 IEqualityComparer

Dictionary(IEqualityComparer)

初始化 Dictionary 类的新实例,该实例为空且具有默认的初始容量,并使用指定的 IEqualityComparer

Dictionary(Int32)

初始化 Dictionary 类的新实例,该实例为空且具有指定的初始容量,并为键类型使用默认的相等比较器。

Dictionary(Int32, IEqualityComparer)

初始化 Dictionary 类的新实例,该实例为空且具有指定的初始容量,并使用指定的 IEqualityComparer

Dictionary(SerializationInfo, StreamingContext)

用序列化数据初始化 Dictionary 类的新实例。

属性 

Comparer

获取用于确定字典中的键是否相等的 IEqualityComparer

Count

获取包含在 Dictionary 中的键/值对的数目。

Item[TKey]

获取或设置与指定的键关联的值。

Keys

获取包含 Dictionary 中的键的集合。

Values

获取包含 Dictionary 中的值的集合。

方法 

Add(TKey, TValue)

将指定的键和值添加到字典中。

Clear()

将所有键和值从 Dictionary 中移除。

ContainsKey(TKey)

确定是否 Dictionary 包含指定键。

ContainsValue(TValue)

确定 Dictionary 是否包含特定值。

Equals(Object)

确定指定的对象是否等于当前对象。

(Inherited from Object)
GetEnumerator()

返回循环访问 Dictionary 的枚举数。

GetHashCode()

作为默认哈希函数。

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext)

实现 ISerializable 接口,并返回序列化 Dictionary 实例所需的数据。

GetType()

获取当前实例的 Type。

(Inherited from Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(Inherited from Object)
OnDeserialization(Object)

实现 ISerializable 接口,并在完成反序列化之后引发反序列化事件。

Remove(TKey)

从 Dictionary 中移除所指定的键的值。

ToString()

返回表示当前对象的字符串。

(Inherited from Object)
TryGetValue(TKey, TValue)

获取与指定键关联的值。

C