Dictionary的使⽤⽅法详解
简介在C#中,Dictionary提供快速的基于兼职的元素查。当你有很多元素的时候可以使⽤它。它包含在System.Collections.Generic名空间中。
在使⽤前,你必须声明它的键类型和值类型。
详细说明必须包含名空间System.Collection.Generic Dictionary⾥⾯的每⼀个元素都是⼀个键值对(由⼆个元素组成:键和值) 键必须是唯⼀的,⽽值不需要唯⼀的键和值都可以是任何类型(⽐如:string, int, ⾃定义类型,等等) 通过⼀个键读取⼀个值的时间是接近O(1) 键值对之间的偏序可以不定义创建和初始化⼀个Dictionary对象 Dictionary<int,string> myDictionary = new Dictionary<int, string="">(); 添加键 static void Main(string[] args) { Dictionary<string, int=""> d = new Dictionary<string, int="">(); d.Add("C#", 2); d.Add("C", 0); d.Add("C++", -1); } 查键 static void Main(string[] args) { Dictionary<string, int=""> d = new Dictionary<string, int="">(); d.Add("C#", 2); d.Add("VB", 1);
d.Add("C", 0); d.Add("C++", -1); if (d.ContainsKey("VB")) // True { int p = d["VB"]; Consol
e.WriteLine(p); } if
(d.ContainsKey("C")) { int p1 = d["C"]; Console.WriteLine(p1); } } 删除元素 static void Ma
in(string[] args) { Dictionary<string, int=""> d = new Dictionary<string, int="">(); d.Add("C#", 2); d.Add("VB", 1); d.Add("C", 0); d.Add("C++", -1); d.Remove("C"); d.Remove("VB"); } 使⽤ContainsValue查值的存在 static void Main(string[] args) { Dictionary<string, int=""> d = new Dictionary<string, int="">(); d.Add("C#", 2); d.Add("VB", 1); d.Add("C", 0); d.Add("C++", -1); if (d.ContainsValue(1)) {
Console.WriteLine("VB"); } if (d.ContainsValue(2)) { Console.WriteLine("C#"); } if (d.ContainsValue(0)) { Console.WriteLine("C"); } if (d.ContainsValue(-1)) { Console.WriteLine("C++"); } } KeyNotFoundException 如果你尝试读取字典中⼀个不存在的键,那么你会得到⼀个KeyNotFoundException。所有在读取⼀个键之前,你必须先使⽤ContainKey来核对键是否存在字典中。
基于int键的Dictionary static void Main(string[] args) { Dictionary<int, string=""> d = new Dictionary<int, string="">(); d.Add(1000, "Planet"); d.Add(2000, "Stars"); // lookup the int in the dictionary. if (d.ContainsKey(1000)) { Console.WriteLine(true); } Console.ReadLine(); } 排序字典SortedDictionary 在排序字典中,当添加元素时字典必须进⾏排序,所以插⼊的速度会⽐较慢点。但是因为元素是有序存储的,所以元素的查可以使⽤⼆分搜索等⼀些效率更⾼的搜索。
总结在这篇⽂章中,简要地介绍C#中的Dictionary的使⽤。动⼿写写吧~
1. using System;
2. using System.Collections.Generic;
3.
4. class DictionaryDemo
5. {
6. staticvoid Main(string[] args)
7. {
8. DictionaryDemo001();
9. Console.ReadLine();
10.
11. DictionaryDemo002();
12. Console.ReadLine();
13.
14. DictionaryDemo003();
15. Console.ReadLine();
16. }
17.
18. /// <summary>
19. /// ⼀般⽤法
20. /// </summary>
21. staticvoid DictionaryDemo001()
22. {
23. Dictionary<int, string> dict = new Dictionary<int, string>();
24. dict.Add(1, "111");
25. dict.Add(2, "222");
26.
27. //判断是否存在相应的key并显⽰
28. if (dict.ContainsKey(2))
29. {
30. Console.WriteLine(dict[2]);
31. }
32.
33. //遍历Keys
34. foreach (var item in dict.Keys)
35. {
36. Console.WriteLine("Key:{0}", item);
37. }
38.
39. //遍历Values
writeline使用方法python40. foreach (var item in dict.Values)
41. {
42. Console.WriteLine("value:{0}", item);
43. }
44.
45. //遍历整个字典
46. foreach (var item in dict)
47. {
48. Console.WriteLine("key:{0} value:{1}", item.Key, item.Value);
49. }
50. }
51.
52. /// <summary>
53. /// 参数为其它类型
54. /// </summary>
55. staticvoid DictionaryDemo002()
56. {
57. Dictionary<string, string[]> dict = new Dictionary<string, string[]>();
58. dict.Add("1", "1,11,111".Split(','));
59. dict.Add("2", "2,22,222".Split(','));
60. Console.WriteLine(dict["2"][2]);
61. }
62.
63. /// <summary>
64. /// 调⽤⾃定义类
65. /// </summary>
66. staticvoid DictionaryDemo003()
67. {
68. Dictionary<int, yongfa365> dict = new Dictionary<int, yongfa365>();
69. for (int i = 0; i < 10; i++)
70. {
71. yongfa365 y = new yongfa365();
72. y.UserCode = i;
73. y.UserName = "fa365 " + i.ToString();
74. dict.Add(i, y);
75. }
76. foreach (var item in dict)
77. {
78. Console.WriteLine("{0} One:{1} UserName:{2}", item.Key, item.Value.UserCode, item.Value.UserName);
79. }
80. }
81. }
82.
83. class yongfa365
84. {
85. publicint UserCode { get; set; }
86. publicstring UserName { get; set; }
87.
88. }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论