51、c# 请列举出6个集合类及用途

在C#中,集合类提供了多种数据结构来存储和操作一组对象。以下是6个常用的集合类及其用途:

1. List< T >

  • 用途:动态数组,用于存储一组有序的对象,支持动态扩容和缩容。

  • 特点:

    • 可以通过索引直接访问元素。
    • 支持添加、删除、插入和查找操作。
    • 适用于需要频繁访问和修改元素的场景。
  • 示例:

List<string> fruits = new List<string> { "Apple", "Banana", "Orange" };
fruits.Add("Grape"); // 添加元素
string firstFruit = fruits[0]; // 通过索引访问

2. Dictionary<TKey, TValue>

  • 用途:键值对集合,用于通过唯一的键快速查找对应的值。
  • 特点:
    • 键必须是唯一的,值可以重复。
    • 查找、添加和删除操作的时间复杂度接近O(1)。
    • 适用于需要快速查找的场景,如缓存、配置存储等。
  • 示例:
Dictionary<int, string> userIds = new Dictionary<int, string>
{
    { 1, "Alice" },
    { 2, "Bob" }
};
string name = userIds[1]; // 通过键查找

3. HashSet< T >

  • 用途:无序集合,用于存储不重复的元素。
  • 特点:
    • 自动去重,元素唯一。
    • 支持集合操作(如并集、交集、差集)。
    • 适用于需要快速判断元素是否存在的场景。
  • 示例:
HashSet<int> uniqueNumbers = new HashSet<int> { 1, 2, 3, 3, 4 }; // 自动去重
bool containsThree = uniqueNumbers.Contains(3); // 判断是否存在

4. Queue< T >

  • 用途:先进先出(FIFO)队列,用于按顺序处理元素。
  • 特点:
    • 元素按照添加的顺序排列。
    • 支持Enqueue(入队)和Dequeue(出队)操作。
    • 适用于任务调度、消息队列等场景。
  • 示例:
Queue<string> tasks = new Queue<string>();
tasks.Enqueue("Task1");
tasks.Enqueue("Task2");
string nextTask = tasks.Dequeue(); // 获取并移除队首元素

5. Stack< T >

  • 用途:后进先出(LIFO)栈,用于按相反顺序处理元素。
  • 特点:
    • 元素按照添加的逆序排列。
    • 支持Push(压栈)和Pop(弹栈)操作。
    • 适用于撤销操作、表达式求值等场景。
  • 示例:
Stack<char> brackets = new Stack<char>();
brackets.Push('(');
brackets.Push(')');
char topBracket = brackets.Pop(); // 获取并移除栈顶元素

6. LinkedList< T >

  • 用途:双向链表,用于高效地在任意位置插入和删除元素。
  • 特点:
    • 每个节点包含数据和前后节点的引用。
    • 支持在头部、尾部或指定节点后插入/删除元素。
    • 适用于需要频繁在中间位置操作的场景。
  • 示例:
LinkedList<string> cities = new LinkedList<string>();
LinkedListNode<string> newYork = cities.AddLast("New York");
cities.AddAfter(newYork, "Boston"); // 在指定节点后插入

总结

  • List< T > 动态数组,有序存储,适用于频繁访问和修改元素。
  • Dictionary<TKey, TValue>键值对存储,快速查找,适用于需要通过键快速访问值的场景。
  • HashSet< T >存储不重复元素,适用于需要去重或快速判断元素存在的场景。
  • Queue< T >先进先出队列,适用于任务调度、消息队列等。
  • Stack< T >后进先出栈,适用于撤销操作、表达式求值等。
  • LinkedList< T >双向链表,高效插入/删除,适用于需要频繁在中间位置操作的场景。

根据具体需求选择合适的集合类,可以提高代码的效率和可读性。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值