当前位置: 首页 > article >正文

【C#】键值对的一种常见数据结构Dictionary<TKey, TValue>

在 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>

创建字典
Dictionary<string, int> myDictionary = new Dictionary<string, int>();
添加键值对
myDictionary.Add("Pn000", 195);
myDictionary.Add("Pn001", 438);
myDictionary.Add("Pn002", 1665);
访问字典中的值

通过键来获取值:

int value = myDictionary["Pn000"];  // 返回 195
Console.WriteLine(value);
修改字典中的值

可以直接通过键修改值:

myDictionary["Pn000"] = 999;  // 更新 "Pn000" 对应的值为 999
检查键是否存在

在访问字典的值之前,最好检查键是否存在,以避免抛出异常:

if (myDictionary.ContainsKey("Pn000"))
{
    int value = myDictionary["Pn000"];
    Console.WriteLine(value);
}
遍历字典

你可以使用 foreach 循环遍历字典中的所有键值对:

foreach (var kvp in myDictionary)
{
    Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}

4. 常见用法

  • 查找某个值:可以通过键来快速查找值,因为字典是通过哈希表(HashTable)实现的,查找操作的时间复杂度是 O(1),即常数时间。
  • 计数器:字典经常用于实现计数器功能,例如统计一组数据中每个元素出现的次数。
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> 是一种非常有用的数据结构,用于存储和快速查找键值对。在实际编程中,我们常常使用字典来存储配置项、计数数据、映射关系等信息。


http://www.kler.cn/a/427850.html

相关文章:

  • Elasticsearch:如何搜索含有复合词的语言
  • Docker技术简介
  • 23.Word:小王-制作公司战略规划文档❗【5】
  • 你了解哪些Java限流算法?
  • 深入理解Flexbox:弹性盒子布局详解
  • 蓝桥备赛指南(5)
  • NAS-FCOS论文总结
  • 【xLSTM-Transformer序列分类】Pytorch使用xLSTM-Transformer对序列进行分类源代码
  • 【Redis集群】使用docker compose创建docker集群,并暴露外部接口
  • Android APP自学笔记
  • 一、web基础和http协议
  • Apache Doris Sql Cache
  • draggable插件——实现元素的拖动排序——拖动和不可拖动的两种情况处理
  • 第一节、电路连接【51单片机-TB6600驱动器-步进电机教程】
  • Java课程设计项目-servlet+jsp美食系统、菜品管理系统
  • 数据结构代码归纳
  • THENA大涨将对整个DeFi市场产生怎样的影响?
  • QT 左右 上下,拉伸 分配窗口大小
  • [Python | CS基础 ]Python多线程`threading`和多进程`multiprocessing`
  • 相机动态/在线标定
  • 【深度学习】分类问题代码实战之初始手写数据集
  • Qt复习学习
  • ASP.NET Core SignalR 入门
  • FastAPI中创建一个多App架构
  • 超详细!关于在Docker里安装Hadoop的详细操作(部署单点集群)
  • Python 中的魔法方法有哪些?