当前位置: 首页 > 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.wxhsa.cn/company.asp?id=4771

相关文章:

  • OpenStack Cinder 架构
  • 完整教程:IC(输入捕获)
  • HiMarket 正式开源,为企业落地开箱即用的 AI 开放平台
  • 如何统计DrawMeshInstancedIndirect绘制物体的Triangle数据
  • VK1S68C点钟LED驱动控制专用芯片高抗干扰数显驱动IC 可支持134的点阵LED显示面板
  • 基于MATLAB的海洋中尺度涡旋诊断
  • 从混乱到有序:Tita 项目一体化管理的全场景赋能
  • SpringBoot入门指南:让Java开发变得像搭积木一样简单 - 教程
  • 汇编语言[王爽]-13 int指令【中断实现loop、jmp】
  • Supabase云同步架构:Flutter应用的数据同步策略
  • 汇编语言[王爽]-12 内中断
  • 【SPIE出版】第五届先进制造技术与电子信息国际学术会议(AMTEI 2025)
  • 2025.9.15 考试总结
  • 汇编语言[王爽]-01 基础知识
  • 贪心外套计数
  • 汇编语言[王爽]-02 寄存器
  • 汇编语言[王爽]-03 寄存器(内存访问)
  • 汇编语言[王爽]-05 [BX]和loop指令
  • 完整教程:YOLO数据集格式转换工具v1.0-微智启软件工作室
  • 2.docker 安装
  • 树形DP2F
  • 搞定SPI开发:硬件设计精讲与CH390H示例应用
  • Qt-摄像头捕获画面
  • 我开发的软件和开源/免费软件
  • PostgreSQL中级认证,PG证书官网查询
  • LLaMA-Adapter - 详解
  • 查看安装软件版本的命令
  • ubuntu 20.04安装mysql 5.7
  • 企业微信逆向开发协议,ipad协议调用方式
  • OpenStack Nova Scheduler 计算节点选择机制