在 C# 中,Dictionary<TKey, TValue>
是一个 键值对(key-value)集合 ,是一种非常常见的数据结构。它允许通过 键 (key
)来快速查找与之相关的 值 (value
)。你可以将其类比为一个映射(map)或者是一个关联数组,常用于存储一对一的关联数据。
1. Dictionary 基本概念
- 键(Key):唯一的标识符,通常是用来检索对应值的。键必须是唯一的,也就是说,同一个字典中不能有两个相同的键。
- 值(Value):与某个键相关联的数据。多个键可以映射到相同的值,但一个键只能映射到一个值。
2. Dictionary<string, int> 解释
在 Dictionary<string, int>
中:
string
是 键(Key) 的类型,表示键是一个字符串("Pn000"
、"Pn001"
等)。int
是 值(Value) 的类型,表示与每个键关联的值是整数(例如 195、4386 等)。
3. 如何使用 Dictionary<string, int>
创建字典
csharp
Dictionary<string, int> myDictionary = new Dictionary<string, int>();
添加键值对
csharp
myDictionary.Add("Pn000", 195);
myDictionary.Add("Pn001", 438);
myDictionary.Add("Pn002", 1665);
访问字典中的值
通过键来获取值:
csharp
int value = myDictionary["Pn000"]; // 返回 195
Console.WriteLine(value);
修改字典中的值
可以直接通过键修改值:
csharp
myDictionary["Pn000"] = 999; // 更新 "Pn000" 对应的值为 999
检查键是否存在
在访问字典的值之前,最好检查键是否存在,以避免抛出异常:
csharp
if (myDictionary.ContainsKey("Pn000"))
{
int value = myDictionary["Pn000"];
Console.WriteLine(value);
}
遍历字典
你可以使用 foreach
循环遍历字典中的所有键值对:
csharp
foreach (var kvp in myDictionary)
{
Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}
4. 常见用法
- 查找某个值:可以通过键来快速查找值,因为字典是通过哈希表(HashTable)实现的,查找操作的时间复杂度是 O(1),即常数时间。
- 计数器:字典经常用于实现计数器功能,例如统计一组数据中每个元素出现的次数。
csharp
Dictionary<string, int> wordCount = new Dictionary<string, int>();
foreach (string word in words)
{
if (wordCount.ContainsKey(word))
{
wordCount[word]++;
}
else
{
wordCount[word] = 1;
}
}
5. 字典的优点
- 快速查找:字典通过哈希表实现,能够非常快速地根据键查找对应的值。
- 灵活的键值对存储:字典可以存储任何类型的对象作为键和值,只要键是唯一的。
6. 小结
Dictionary<string, int>
是一种非常有用的数据结构,用于存储和快速查找键值对。在实际编程中,我们常常使用字典来存储配置项、计数数据、映射关系等信息。