CSharp中字典(Dictionary)的使用

前言

Dictionary 是 C# 中的一种集合类型,用于存储键值对。

以下是关于 Dictionary 的说明:

定义

Dictionary<TKey, TValue> 是泛型类型,其中 TKey 表示键的类型,TValue 表示值的类型。

它实现了 IDictionary<TKey, TValue> 接口。

特点

  • 键是唯一的,每个键最多只能关联一个值。
  • 键和值可以是任意类型,包括值类型和引用类型。
  • 内部使用哈希表实现,使得在大多数情况下,查找键值对的操作具有很高的性能。

用法

  • 添加键值对:使用 Add 方法或直接通过索引器语法添加。
  • 访问值:通过键来获取相应的值。
  • 删除键值对:使用 Remove 方法来删除指定键的键值对。
  • 判断键是否存在:使用 ContainsKey 方法来检查指定的键是否存在于字典中。
  • 遍历字典:可以使用 foreach 循环遍历字典中的所有键值对,或者通过 KeysValues 属性分别获取键集合和值集合。

注意事项

  • Dictionary 不保证键值对的顺序,键值对在内部存储时可能会重新排列。
  • 如果需要按照键的顺序访问键值对,可以考虑使用 SortedDictionary

Dictionary 是 C# 中常用的数据结构之一,适用于需要快速查找、添加和删除键值对的场景。

初始化

无序的字典

1
private readonly Dictionary<string, int> _selectMap = new Dictionary<string,int>();

有序的字典

默认按照键的自然顺序进行排序

1
private readonly SortedDictionary<string, int> _selectMap = new SortedDictionary<string,int>();

清空

1
_selectMap.Clear();

Key

获取某个索引的Key

1
2
3
4
5
6
7
8
9
var _selectMap = new Dictionary<string, int>
{
{ "A", 10 },
{ "B", 20 },
{ "C", 15 },
{ "D", 25 }
};
string[] keys = new string[_selectMap.Count];
_selectMap.Keys.CopyTo(keys, 0);

Value

Value中的最大值

1
2
3
4
if (_selectMap.Count > 0)
{
_selectMap.Values.Max()
}

注意

字典为空的时候直接取值的最大值会报错。