C# “字典” Dictionary的简单用法

171 阅读3分钟

C# “字典” Dictionary的用法

C#中的Dictionary是一种特殊的数据集合。因为它由键值,和数值组成,并且一一对应,通过键值我们就可以查询到对应的数值,就好像查字典一样,故而我们会形象地称呼它为“字典”。据于它们这种特殊地结构,C#定义了它很多地属性与方法,在实际应用中非常实用。

一、结构

Dictionary的结构是这样的:Dictionary<[key],[value]>,所引用的命名空间是:System.Collections.Generic

二、定义

关于Dictionary的定义,它必须遵循一下规则:

1、键值(key)与(value),一一映射,共同关联组成一个键值对

2、任何的键都是唯一的

3、键不能为空(若值为引用类型,则可以为空)

4、keyvalue可以是任意类型

三、创建与初始化
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:6

9、对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: 返回表示当前 ObjectString。 (从 Object 继承。)

TryGetValue: 获取与指定的键相关联的值。