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<...>> + 手动维护
posted @ 2025-09-15 16:22  yinghualeihenmei  阅读(26)  评论(0)    收藏  举报