C# “字典” Dictionary的用法
C#中的Dictionary是一种特殊的数据集合。因为它由键值,和数值组成,并且一一对应,通过键值我们就可以查询到对应的数值,就好像查字典一样,故而我们会形象地称呼它为“字典”。据于它们这种特殊地结构,C#定义了它很多地属性与方法,在实际应用中非常实用。
一、结构
Dictionary的结构是这样的:Dictionary<[key],[value]>,所引用的命名空间是:System.Collections.Generic。
二、定义
关于Dictionary的定义,它必须遵循一下规则:
1、键值(key)与(value),一一映射,共同关联组成一个键值对
2、任何的键都是唯一的
3、键不能为空(若值为引用类型,则可以为空)
4、key和value可以是任意类型
三、创建与初始化
Dictionary<[key],[value]> mDic = new Dictionary<[key],[value]>();
例:Dictionary<int,int> mDic = new Dictionary<int,int>();
四、使用技巧
1、添加元素:Add
//例: mDic.Add(1,1); mDic.Add(2,1); mDic.Add(3,2);2、删除元素:Remove
//例: mDic.Remove(1); //移除指定键的键值3、查询字典中是否包含指定的键:ContainsKey
//例: if(mDic.ContainsKey(1)) //先判断是否存在这样的键 { Console.WriteLine(“字典中含有这个键”); }4、通过key获取对应的值:Dictionary[key]
//例: if(mDic.ContainsKey(1)) //先判断是否存在这样的键 { Console.WriteLine(mDic[1]); }5、遍历键值对:KeyValuePair
//例: foreach(KeyValuePair<int,int> temp in mDic) { Console.WriteLine("Key = {0}, Value = {1}",temp.Key, temp.Value); }6、遍历所有键与所有键值:Keys(Dictionary<T,T>.KeyCollection),Values(Dictionary<T,T>.ValueCollection)
foreach(var key in mDic.Keys) { Console.WriteLine(key); //获取所有键 } foreach(var value in mDic.Values) { Console.WriteLine(value); //获取所有键值 }7、获取与指定的键相关联的值: public bool TryGetValue(TKey key, out TValue value);
//例: int val = null; mDic.TyrGetValue(1,out val); Console.WriteLine(val);8、对Dictionary进行排序的一个方法
//例: mDic.Add(1,1); mDic.Add(3,3); mDic.Add(5,5); mDic.Add(6,6); mDic.Add(4,4); mDic.Add(2,2); var result = from pair in mDic orderby pair.Key select pair; foreach (KeyValuePair<int, int> pair in result) { Console.WriteLine("Key:{0}, Value:{1}", pair.Key, pair.Value); } //Key:1, Value:1 //Key:2, Value:2 //Key:3, Value:3 //Key:4, Value:4 //Key:5, Value:5 //Key:6, Value:69、对Dictionary求交集、差集、并集
//例: Dictionary<int, int> Dic1 = new Dictionary<int, int>(); for (int i = 0; i < 10; i++) { Dic1.Add(i, i); } Dictionary<int, int> Dic2 = new Dictionary<int, int>(); for (int i = 5; i < 15; i++) { Dic2.Add(i, i); } //求交集 var jj = Dic1.Keys.Intersect(Dic2.Keys); foreach (var i in jj) { Console.Write(i + " "); } //求差集 var cj = Dic1.Keys.Except(Dic2.Keys); foreach (var i in cj) { Console.Write(i + " "); } //求并集 var bj = Dic1.Keys.Union(Dic2.Keys); foreach (var i in bj) { Console.Write(i + " "); }
五、其它常用属性与方法的说明
Comparer: 获取用于确定字典中的键是否相等的 IEqualityComparer。
Count: 获取包含在 Dictionary中的键/值对的数目。
Item: 获取或设置与指定的键相关联的值。
Keys: 获取包含 Dictionary中的键的集合。
Values: 获取包含 Dictionary中的值的集合。
Add: 将指定的键和值添加到字典中。
Clear: 从 Dictionary中移除所有的键和值。
ContainsKey: 确定 Dictionary是否包含指定的键。
ContainsValue: 确定 Dictionary是否包含特定值。
GetEnumerator: 返回循环访问 Dictionary的枚举数。
GetType: 获取当前实例的 Type。 (从 Object 继承。)
Remove: 从 Dictionary中移除所指定的键的值。
ToString: 返回表示当前 Object的 String。 (从 Object 继承。)
TryGetValue: 获取与指定的键相关联的值。