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

List与Dictionary区别

List<T>Dictionary<TKey,TValue> 都是泛型集合,但底层数据结构、使用场景、操作复杂度完全不同:

✅ 一句话区别

  • List = 有序数组,按索引找元素,可重复。
  • Dictionary = 哈希表,按键找元素,键唯一,无序(插入顺序不保证)。

📊 横向对比表

表格
复制
特性List<T>Dictionary<TKey,TValue>
底层结构 动态数组 哈希表(散列桶)
访问方式 索引 list[i] 键 dict[key]
查找时间复杂度 O(n)(线性) O(1)(平均)
是否允许重复 ✅ 允许 ❌ 键唯一,值可重复
是否有序 ✅ 插入顺序保留 ❌ 不保证顺序(.NET ≥ 5 有 OrderedDictionary
典型操作 添加、遍历、按索引读写 快速查找、去重、映射
示例用途 存储一批学生成绩 学号 → 学生对象映射

🧪 代码对比

csharp
复制
// List:按索引访问
List<string> list = new List<string> { "apple", "banana" };
string fruit = list[0]; // "apple"// Dictionary:按键访问
Dictionary<string, int> dict = new Dictionary<string, int>
{["apple"] = 3,["banana"] = 5
};
int count = dict["apple"]; // 3
 

🧠 记忆口诀

  • List 像排队,有编号,找人得挨个看。
  • Dictionary 像字典,有拼音索引,一查就到位。

⚠️ 注意

  • 需要快速按键查找 → 用 Dictionary
  • 需要保持插入顺序、允许重复 → 用 List
  • 既要键唯一又要保留顺序 → 用 OrderedDictionaryList<KeyValuePair<...>> + 手动维护
http://www.zskr.cn/news/5261.html

相关文章:

  • 汇编语言[王爽]-13 int指令【中断实现loop、jmp】
  • Supabase云同步架构:Flutter应用的数据同步策略
  • 【SPIE出版】第五届先进制造技术与电子信息国际学术会议(AMTEI 2025)
  • 2025.9.15 考试总结
  • 汇编语言[王爽]-02 寄存器
  • 2.docker 安装
  • 搞定SPI开发:硬件设计精讲与CH390H示例应用
  • 我开发的软件和开源/免费软件
  • ubuntu 20.04安装mysql 5.7
  • 企业微信逆向开发协议,ipad协议调用方式
  • OpenStack Nova Scheduler 计算节点选择机制
  • 记一种很新的 bitset
  • 有向图强连通分量
  • Kafka 消费者元数据topicId变化问题
  • 【2025-09-14】连岳摘抄
  • GZY.Quartz.MUI(基于Quartz的UI可视化操作组件) 2.8.0发布 新增仪表盘和检索功能
  • MacOS升级15.2后的问题(二):无法修改mac网络地址
  • HCIA——VLAN间通信
  • vue - 内置指令
  • 读书笔记:为什么你的数据库有时不用索引?一个关键参数告诉你答案
  • MacOS升级15.2后的问题(一):安装第三方下载的软件,提醒文件已损坏
  • 故障分析:ORA-00900 修改props$中字符集导致
  • Ollama + Python 极简工作流
  • 单片机实现挡位调节
  • 长城杯WriteUp
  • vite取别名@
  • kingbase金仓数据库docker部署完整步骤
  • 【VPX361】基于3U VPX总线架构的XCZU47DR射频收发子模块
  • 自动驾驶ADAS数据集 13万张高清道路车辆识别图像 覆盖多场景智能交通应用 支持目标检测图像识别模型训练与AI视觉算法开发
  • Norwood-Hamilton男性脱发分级图像集|2400+张多角度高清头皮图像|涵盖7类脱发诊断标注|适用于AI诊断工具开发、皮肤科研究与植发产品研发|包含5角度标准化拍摄、支持秃顶早期检测