跳转到内容

C Sharp 列表集合

来自代码酷

C#列表集合[编辑 | 编辑源代码]

列表集合(List)是C#中最常用的动态集合类型之一,它属于System.Collections.Generic命名空间,提供了灵活的数据存储和操作方法。与数组不同,列表的大小可以动态调整,支持元素的增删改查,是处理可变数据集合的理想选择。

基本介绍[编辑 | 编辑源代码]

列表(List<T>)是一种泛型集合,其中T代表元素的类型(如intstring或自定义类)。列表的主要特点包括:

  • 动态大小:无需预先指定容量,可随时添加或移除元素。
  • 类型安全:编译时检查元素类型,避免运行时错误。
  • 丰富的方法:支持排序、搜索、遍历等操作。

创建列表[编辑 | 编辑源代码]

以下示例展示如何创建和初始化列表:

// 创建一个整数列表
List<int> numbers = new List<int>();

// 创建并初始化字符串列表
List<string> fruits = new List<string>() { "Apple", "Banana", "Cherry" };

常用操作[编辑 | 编辑源代码]

列表提供多种方法来操作元素:

添加元素[编辑 | 编辑源代码]

使用Add方法添加单个元素,或AddRange添加多个元素:

List<string> colors = new List<string>();
colors.Add("Red");           // 添加单个元素
colors.AddRange(new[] { "Green", "Blue" });  // 添加多个元素

访问元素[编辑 | 编辑源代码]

通过索引访问元素(从0开始):

string firstFruit = fruits[0];  // 获取第一个元素("Apple")

移除元素[编辑 | 编辑源代码]

使用RemoveRemoveAtClear

fruits.Remove("Banana");    // 移除指定元素
fruits.RemoveAt(0);         // 移除索引为0的元素
fruits.Clear();             // 清空列表

遍历列表[编辑 | 编辑源代码]

使用foreach循环或for循环:

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

for (int i = 0; i < fruits.Count; i++)
{
    Console.WriteLine(fruits[i]);
}

性能考虑[编辑 | 编辑源代码]

列表的底层实现基于数组,因此:

  • 访问元素:O(1)时间复杂度(通过索引直接访问)。
  • 添加元素
 * 平均情况下为O(1),但如果容量不足需重新分配内存,则为O(n)。
  • 插入/删除元素:O(n)时间复杂度(需移动后续元素)。

实际案例[编辑 | 编辑源代码]

以下是一个学生成绩管理系统的简化示例:

List<Student> students = new List<Student>();
students.Add(new Student("Alice", 85));
students.Add(new Student("Bob", 90));

// 查找成绩高于88的学生
var topStudents = students.Where(s => s.Score > 88).ToList();

// 按成绩排序
students.Sort((s1, s2) => s2.Score.CompareTo(s1.Score));

高级用法[编辑 | 编辑源代码]

容量管理[编辑 | 编辑源代码]

可通过Capacity属性手动设置容量以减少内存重新分配:

List<int> largeList = new List<int>(1000);  // 预分配容量

自定义排序[编辑 | 编辑源代码]

使用IComparer<T>接口实现复杂排序:

class StudentComparer : IComparer<Student>
{
    public int Compare(Student x, Student y) => x.Score.CompareTo(y.Score);
}

students.Sort(new StudentComparer());

列表与数组的对比[编辑 | 编辑源代码]

特性 列表(List<T>) 数组(T[])
动态 | 固定
略低(需额外开销) | 更高
丰富(排序、搜索等) | 基本

可视化表示[编辑 | 编辑源代码]

graph TD A[创建列表] --> B[添加元素] B --> C[访问元素] C --> D[修改元素] D --> E[移除元素] E --> F[遍历列表]

数学表示[编辑 | 编辑源代码]

列表的查找操作可以表示为: IndexOf(x)={i如果 x=L[i] 且 i 是最小索引1如果 xL 其中L代表列表,x为查找的元素。

总结[编辑 | 编辑源代码]

C#列表集合是处理动态数据的高效工具,适合大多数需要灵活存储和操作元素的场景。初学者应掌握基本操作,而高级用户可进一步优化性能或实现复杂逻辑。