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: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:             返回表示当前 Object的 String。 (从 Object 继承。)

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

猜你喜欢

转载自blog.csdn.net/mr_five55/article/details/129804455