一、List<T> 泛型集合(线性有序容器)

1. 实例化(构造函数)

三种基础创建方式:

csharp

运行

// 1. 创建空列表
List<int> list1 = new List<int>();
// 2. 指定初始容量(减少扩容损耗)
List<int> list2 = new List<int>(20);
// 3. 从已有集合复制创建
int[] arr = {1,2,3};
List<int> list3 = new List<int>(arr);

2. 常用属性

  1. Count:获取集合实际存储元素个数
  2. Capacity:底层数组总容量,元素超量时自动翻倍扩容
  3. this[int index]:数字下标索引,直接通过索引读写元素

3. 常用实例方法

分为三大操作:

  • 新增:Add()AddRange()Insert()
  • 删除:Remove()RemoveAt()Clear()
  • 查询修改:IndexOf()Contains()Sort()、下标修改元素

4. 核心特点

  1. 实例类,new 一次后可反复增删改查同一容器
  2. 底层数组实现,支持动态扩容,长度不固定
  3. 优势:下标随机访问速度极快; 劣势:中间插入 / 删除元素需要移位,海量数据操作效率较差

二、Dictionary<TKey,TValue> 泛型字典(键值对哈希容器)

1. 实例化(构造函数)

三种创建方式:

csharp

运行

// 1. 创建空字典
Dictionary<string, int> dic1 = new Dictionary<string, int>();
// 2. 指定哈希桶初始容量
Dictionary<string, int> dic2 = new Dictionary<string, int>(50);
// 3. 复制已有字典创建
Dictionary<string, int> temp = new Dictionary<string, int>();
Dictionary<string, int> dic3 = new Dictionary<string, int>(temp);

2. 常用属性

  1. Count:字典中键值对总数量
  2. Keys:获取全部键的集合 DictionaryKeyCollection
  3. Values:获取全部值的集合 DictionaryValueCollection
  4. this[TKey key]:键索引器,可读可写;键不存在赋值会新增,取值会报错

3. 常用实例方法(高频)

  • 新增 / 修改:Add()、索引器赋值
  • 删除:Remove(key)Clear()
  • 查询判断(高频):ContainsKey(key)(判断键是否存在)、TryGetValue()(安全取值)
  • 遍历:搭配 foreach 遍历键、值或键值对 KeyValuePair

4. 核心特点

  1. 实例类,一次 new 可反复读写
  2. 底层哈希表,按 Key 查询时间复杂度 O (1),查询速度极快
  3. 约束:Key 唯一不可重复,Value 允许重复
  4. 无数字下标,只能通过 Key 访问数据,不支持按数字索引取值

三、List<T> 与 Dictionary<TKey,TValue> 选型对比总结

  1. 只存一组有序数据、需要按序号访问 → 选 List<T>
  2. 需要根据唯一标识快速查找数据、键值对应存储 → 选 Dictionary<TKey,TValue>
  3. 性能区分:
    • List:索引读取快,中间增删慢;
    • Dictionary:按键查找超快,无顺序索引概念

更多推荐