欢迎光临
我们一直在努力

C# 集合方法速查表

C# 集合方法速查表

一、List(动态列表)

操作类型方法说明
添加 list.Add(要添加的元素) 在末尾添加单个元素
list.AddRange(要批量添加的集合) 在末尾批量添加多个元素
list.Insert(插入位置的索引, 要插入的元素) 在指定索引位置插入元素
list.InsertRange(插入位置的索引, 要批量插入的集合) 在指定位置批量插入
删除 list.Remove(要删除的元素) 删除第一个匹配的元素,返回 bool
list.RemoveAt(要删除位置的索引) 按索引删除元素
list.RemoveAll(删除条件) 删除所有满足条件的元素,返回删除数量
list.RemoveRange(起始索引, 删除数量) 从指定位置开始删除指定数量的元素
list.Clear() 清空所有元素
查询 list.Contains(要查找的元素) 判断是否包含指定元素
list.IndexOf(要查找的元素) 查找第一个匹配元素的索引,未找到返回 -1
list.Find(查找条件) 按条件查找第一个匹配元素
list.FindAll(查找条件) 按条件查找所有匹配元素,返回新 List
list.FindIndex(查找条件) 按条件查找第一个匹配元素的索引
list.Exists(判断条件) 判断是否存在满足条件的元素
修改 list[索引] = 新值 通过索引直接修改元素
list.Sort() 对列表排序
list.Reverse() 反转列表元素顺序

二、Dictionary<TKey, TValue>(字典/键值对集合)

操作类型方法说明
添加 dict.Add(键, 值) 添加键值对,键重复时抛出异常
dict[键] = 值 添加或更新,键已存在则覆盖值
dict.TryAdd(键, 值) 尝试添加,键已存在时不抛异常,返回 bool
删除 dict.Remove(要删除的键) 按键删除,返回 bool
dict.Remove(要删除的键, out 被删除的值) 删除并输出被删除的值(.NET Core 2.0+)
dict.Clear() 清空所有键值对
查询 dict.ContainsKey(要查找的键) 判断是否包含指定键
dict.ContainsValue(要查找的值) 判断是否包含指定值
dict.TryGetValue(要查找的键, out 获取到的值) 安全获取值,键不存在时不抛异常
dict[键] 通过键获取值,键不存在时抛出异常
修改 dict[键] = 新的值 按键修改值(键必须已存在)

三、HashSet(哈希集合,元素唯一)

操作类型方法说明
添加 set.Add(要添加的元素) 添加元素,重复时返回 false
set.UnionWith(要合并的另一个集合) 合并另一个集合(并集)
删除 set.Remove(要删除的元素) 删除指定元素
set.RemoveWhere(删除条件) 删除所有满足条件的元素
set.Clear() 清空集合
查询 set.Contains(要查找的元素) 判断是否包含指定元素
set.Overlaps(另一个集合) 判断是否与另一集合有交集
set.SetEquals(另一个集合) 判断两个集合元素是否完全相同
集合运算 set.IntersectWith(另一个集合) 取交集(保留两个集合共有的元素)
set.ExceptWith(另一个集合) 取差集(移除另一集合中也存在的元素)
set.SymmetricExceptWith(另一个集合) 取对称差集(只保留不共有的元素)
set.IsSubsetOf(另一个集合) 判断是否为子集
set.IsSupersetOf(另一个集合) 判断是否为超集

四、Queue(队列,先进先出 FIFO)

操作类型方法说明
添加 queue.Enqueue(要入队的元素) 入队(添加到队尾)
删除 queue.Dequeue() 出队(移除并返回队首元素),空时抛异常
queue.TryDequeue(out 出队的元素) 安全出队,空时返回 false
queue.Clear() 清空队列
查询 queue.Peek() 查看队首元素但不移除
queue.TryPeek(out 队首元素) 安全查看队首元素
queue.Contains(要查找的元素) 判断是否包含指定元素

五、Stack(栈,后进先出 LIFO)

操作类型方法说明
添加 stack.Push(要入栈的元素) 入栈(压入栈顶)
删除 stack.Pop() 出栈(移除并返回栈顶元素),空时抛异常
stack.TryPop(out 出栈的元素) 安全出栈,空时返回 false
stack.Clear() 清空栈
查询 stack.Peek() 查看栈顶元素但不移除
stack.TryPeek(out 栈顶元素) 安全查看栈顶元素
stack.Contains(要查找的元素) 判断是否包含指定元素

六、LinkedList(双向链表)

操作类型方法说明
添加 list.AddLast(要添加的元素) 在尾部添加
list.AddFirst(要添加的元素) 在头部添加
list.AddAfter(参照节点, 要插入的元素) 在指定节点之后添加
list.AddBefore(参照节点, 要插入的元素) 在指定节点之前添加
删除 list.Remove(要删除的元素) 删除第一个匹配的元素
list.Remove(要删除的节点) 删除指定节点
list.RemoveFirst() 删除头节点
list.RemoveLast() 删除尾节点
list.Clear() 清空链表
查询 list.Contains(要查找的元素) 判断是否包含指定元素
list.Find(要查找的元素) 查找第一个匹配节点,返回 LinkedListNode<T>
list.FindLast(要查找的元素) 查找最后一个匹配节点

七、SortedSet(有序集合)

操作类型方法说明
添加 set.Add(要添加的元素) 添加元素(自动排序且唯一)
删除 set.Remove(要删除的元素) 删除指定元素
set.RemoveWhere(删除条件) 删除满足条件的元素
set.Clear() 清空集合
查询 set.Contains(要查找的元素) 判断是否包含
set.Min 获取最小值(属性)
set.Max 获取最大值(属性)
set.GetViewBetween(范围下限, 范围上限) 获取指定范围内的子集视图

八、通用 LINQ 扩展方法(适用于所有 IEnumerable)

操作类型方法说明
筛选 .Where(筛选条件) 按条件筛选元素
投影 .Select(转换规则) 将每个元素转换为新形式
排序 .OrderBy(排序依据) 升序排序
.OrderByDescending(排序依据) 降序排序
聚合 .Count() / .Sum() / .Average() / .Max() / .Min() 计数、求和、平均值、最大值、最小值
取值 .First() / .Last() / .Single() 取第一个/最后一个/唯一元素(无匹配时抛异常)
.FirstOrDefault() / .LastOrDefault() 安全取值,无匹配时返回默认值
转换 .ToList() / .ToArray() / .ToDictionary() 转换为 List、数组、Dictionary
去重 .Distinct() 去除重复元素
判断 .Any(判断条件) 是否存在满足条件的元素
.All(判断条件) 是否所有元素都满足条件

九、List 与 Dictionary 完整代码示例(已验证可运行)

代码

using System;
using System.Collections.Generic;
using System.Linq;

namespace CollectionDemo
{
// 定义一个学生类
class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Grade { get; set; }

public override string ToString()
{
return $"[学号:{Id}, 姓名:{Name}, 年龄:{Age}, 班级:{Grade}]";
}
}

class Program
{
static void Main(string[] args)
{
var students = new List<Student>
{
new Student { Id = 1, Name = "小明", Age = 19, Grade = "二班" },
new Student { Id = 2, Name = "小红", Age = 19, Grade = "二班" },
new Student { Id = 3, Name = "小刚", Age = 20, Grade = "一班" },
new Student { Id = 4, Name = "小丽", Age = 17, Grade = "三班" },
new Student { Id = 5, Name = "小华", Age = 21, Grade = "二班" },
new Student { Id = 6, Name = "小芳", Age = 18, Grade = "三班" },
new Student { Id = 7, Name = "小强", Age = 22, Grade = "一班" }
};

// 1. 【排序】按年龄升序
students = students.OrderBy(s => s.Age).ToList();
Console.WriteLine("【排序】按年龄升序:");
students.ForEach(s => Console.WriteLine(" " + s.ToString()));
Console.WriteLine();

// 2. 【删除】移除小强 和 所有三班的学生
students.RemoveAll(s => s.Name == "小强" || s.Grade == "三班");
Console.WriteLine("【删除】移除小强和三班学生后:");
students.ForEach(s => Console.WriteLine(" " + s.ToString()));
Console.WriteLine($"\\n当前学生总数:{students.Count}");
Console.WriteLine(new string('-', 30));

// 3. 【增加】添加新学生
students.Add(new Student { Id = 8, Name = "小新", Age = 18, Grade = "四班" });
Console.WriteLine("\\n【增加】添加小新后:");
students.ForEach(s => Console.WriteLine(" " + s.ToString()));

// 4. 【修改】把学号为 1 的学生年龄改为 25,班级改为五班
var stu1 = students.Find(s => s.Id == 1);
if (stu1 != null)
{
stu1.Age = 25;
stu1.Grade = "五班";
}
Console.WriteLine("\\n【修改】学号1的小明修改后:");
Console.WriteLine(" " + stu1.ToString());

// 5. 【查询】查找所有二班的学生
var classTwo = students.Where(s => s.Grade == "二班").ToList();
Console.WriteLine("\\n【查询】所有二班学生:");
classTwo.ForEach(s => Console.WriteLine(" " + s.ToString()));

Console.WriteLine("\\n———————————–");
Console.WriteLine("【Dictionary 字典示例】");

// 6. 【字典】创建学生字典(Key: 学号, Value: 学生对象)
Dictionary<int, Student> studentDict = students.ToDictionary(s => s.Id);

// 添加字典元素
studentDict[9] = new Student { Id = 9, Name = "小美", Age = 20, Grade = "六班" };

// 快速查找(字典通过键查找比 List 效率高得多)
if (studentDict.ContainsKey(2))
{
Console.WriteLine($"\\n通过字典快速查找学号2的学生:{studentDict[2]}");
}

// 遍历字典
Console.WriteLine("\\n遍历字典中所有学生:");
foreach (var kvp in studentDict)
{
Console.WriteLine($" 键(学号): {kvp.Key} => 值(学生): {kvp.Value}");
}
}
}
}

运行结果

【排序】按年龄升序:
[学号:4, 姓名:小丽, 年龄:17, 班级:三班]
[学号:6, 姓名:小芳, 年龄:18, 班级:三班]
[学号:1, 姓名:小明, 年龄:19, 班级:二班]
[学号:2, 姓名:小红, 年龄:19, 班级:二班]
[学号:3, 姓名:小刚, 年龄:20, 班级:一班]
[学号:5, 姓名:小华, 年龄:21, 班级:二班]
[学号:7, 姓名:小强, 年龄:22, 班级:一班]

【删除】移除小强和三班学生后:
[学号:1, 姓名:小明, 年龄:19, 班级:二班]
[学号:2, 姓名:小红, 年龄:19, 班级:二班]
[学号:3, 姓名:小刚, 年龄:20, 班级:一班]
[学号:5, 姓名:小华, 年龄:21, 班级:二班]

当前学生总数:4
——————————
【增加】添加小新后:
[学号:1, 姓名:小明, 年龄:19, 班级:二班]
[学号:2, 姓名:小红, 年龄:19, 班级:二班]
[学号:3, 姓名:小刚, 年龄:20, 班级:一班]
[学号:5, 姓名:小华, 年龄:21, 班级:二班]
[学号:8, 姓名:小新, 年龄:18, 班级:四班]

【修改】学号1的小明修改后:
[学号:1, 姓名:小明, 年龄:25, 班级:五班]

【查询】所有二班学生:
[学号:2, 姓名:小红, 年龄:19, 班级:二班]
[学号:5, 姓名:小华, 年龄:21, 班级:二班]

———————————–
【Dictionary 字典示例】

通过字典快速查找学号2的学生:[学号:2, 姓名:小红, 年龄:19, 班级:二班]

遍历字典中所有学生:
键(学号): 1 => 值(学生): [学号:1, 姓名:小明, 年龄:25, 班级:五班]
键(学号): 2 => 值(学生): [学号:2, 姓名:小红, 年龄:19, 班级:二班]
键(学号): 3 => 值(学生): [学号:3, 姓名:小刚, 年龄:20, 班级:一班]
键(学号): 5 => 值(学生): [学号:5, 姓名:小华, 年龄:21, 班级:二班]
键(学号): 8 => 值(学生): [学号:8, 姓名:小新, 年龄:18, 班级:四班]
键(学号): 9 => 值(学生): [学号:9, 姓名:小美, 年龄:20, 班级:六班]

赞(0)
未经允许不得转载:171主机测评 » C# 集合方法速查表
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址