C#的Dictionary类使用说明
C#的Dictionary类使用说明
- 一:Dictionary类简单说明
- 二:Dictionary类的构造函数
- 三:Dictionary类的属性
- 四:Dictionary 类的常用方法
- 1: Dictionary<TKey,TValue>.Add(TKey, TValue)的方法介绍
- 2: Dictionary<TKey,TValue>.Clear的方法介绍
- 3: Dictionary<TKey,TValue>.ContainsKey(TKey) 的方法介绍
- 4: Dictionary<TKey,TValue>.ContainsValue(TValue) 的方法介绍
- 5: Dictionary<TKey,TValue>.Remove 的方法介绍
一:Dictionary类简单说明
1)Dictionary<TKey,TValue>泛型类提供从一组键到一组值的映射。 每次对字典的添加都包含一个值和与其关联的键。 通过使用其键检索值的速度非常快,接近 O (1) ,因为类 Dictionary<TKey,TValue> 作为哈希表实现。
2)Dictionary<TKey,TValue>的容量是可以保留的元素数。 随着元素添加,通过重新分配内部数组,容量会自动增加。
二:Dictionary类的构造函数
构造函数 | 构造函数说明 |
---|---|
Dictionary<TKey,TValue>() | 初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空且具有默认的初始容量,并使用键类型的默认相等比较器。 |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) | 初始化 Dictionary<TKey,TValue> 类的新实例,该实例包含从指定的 IDictionary<TKey,TValue> 中复制的元素并为键类型使用默认的相等比较器。 |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer) | 初始化 Dictionary<TKey,TValue> 类的新实例,该实例包含从指定的 IDictionary<TKey,TValue> 中复制的元素并使用指定的 IEqualityComparer。 |
Dictionary<TKey,TValue>(IEqualityComparer) | 初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空,具有默认的初始容量并使用指定的 IEqualityComparer。 |
Dictionary<TKey,TValue>(Int32) | 初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空且具有指定的初始容量,并为键类型使用默认的相等比较器。 |
Dictionary<TKey,TValue>(Int32, IEqualityComparer) | 初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空,具有指定的初始容量并使用指定的 IEqualityComparer。 |
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) | 用序列化数据初始化 Dictionary<TKey,TValue> 类的新实例。 |
三:Dictionary类的属性
属性 | 属性说明 |
---|---|
Comparer | 获取用于确定字典中的键是否相等的 IEqualityComparer。 |
Count | 获取包含在 Dictionary<TKey,TValue> 中的键/值对的数目。 |
Item[TKey] | 获取或设置与指定的键关联的值。 |
Keys | 获得一个包含 Dictionary<TKey,TValue> 中的键的集合。 |
Values | 获得一个包含 Dictionary<TKey,TValue> 中的值的集合。 |
四:Dictionary 类的常用方法
1: Dictionary<TKey,TValue>.Add(TKey, TValue)的方法介绍
1)作用:将指定的键和值添加到字典中。
2)语法:
public void Add (TKey key, TValue value);
3)使用举例:
// 在词典中添加一些元素。没有重复的键,但有些值是重复的。
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
// 如果新键已在词典中,则Add方法引发异常。
try
{
openWith.Add("txt", "winword.exe");
}
catch (ArgumentException)
{
Console.WriteLine("键值为 = \"txt\" 的元素,已经存在.");
}
foreach (var item in openWith)
{
Console.WriteLine(item);
}
4)运行结果:
键值为 = "txt" 的元素,已经存在. [txt, notepad.exe] [bmp, paint.exe] [dib, paint.exe] [rtf, wordpad.exe] |
2: Dictionary<TKey,TValue>.Clear的方法介绍
1)作用:将所有键和值从 Dictionary<TKey,TValue> 中移除。
2)语法:
public void Clear ();
3: Dictionary<TKey,TValue>.ContainsKey(TKey) 的方法介绍
1)作用:确定是否 Dictionary<TKey,TValue> 包含指定键。
2)语法:
public bool ContainsKey (TKey key);
3)使用举例:
//统计 Wellcome to china中的每个字符出现的次数 不考虑大小写
//字符 ----- 键
//出现次数 ----- 值
string str = "Wellcome to china";
Dictionary<char, int> dic = new Dictionary<char, int>();
for (int i = 0; i < str.Length; i++)
{
if (str[i] == ' ')
{
continue;//跳出单次循环,进行下一次循环
}
//如果dic已经包含了当前循环到这个键
if (dic.ContainsKey(str[i]))
{
dic[str[i]]++;//值,再次加1
}
else//说明是第一次出现
{
dic[str[i]] = 1;
}
}
foreach (KeyValuePair<char, int> kv in dic)
{
Console.WriteLine("字母{0}出现了{1}次", kv.Key, kv.Value);
}
4)运行结果:
字母W出现了1次 字母e出现了2次 字母l出现了2次 字母c出现了2次 字母o出现了2次 字母m出现了1次 字母t出现了1次 字母h出现了1次 字母i出现了1次 字母n出现了1次 字母a出现了1次 |
4: Dictionary<TKey,TValue>.ContainsValue(TValue) 的方法介绍
1)作用:确定 Dictionary<TKey,TValue> 是否包含特定值。
2)语法:
public bool ContainsValue (TValue value);
5: Dictionary<TKey,TValue>.Remove 的方法介绍
1)作用:从 Dictionary<TKey,TValue> 中移除所指定的键的值。
2)语法:
public bool Remove (TKey key);