当前位置: 首页 > news >正文

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 >双向链表,高效插入/删除,适用于需要频繁在中间位置操作的场景。

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

在这里插入图片描述

相关文章:

  • pyhton基础【2】基本语法
  • 代码随想录算法训练营第四十九天
  • 【Linux 学习计划】-- Linux调试工具 - gdb cgdb
  • DPDK QDMA 驱动详解 - tx
  • c++命名空间的作用及命名改编
  • 大学生科创项目在线管理系统设计与实现
  • 环境配置文档撰写指南
  • TReport组件指南总结
  • 元组可以比较大小吗?一次返回多个值?编程语言的元组?声明变量一定需要指定类型吗?
  • 【AI实战】从“苦AI”到“爽AI”:Magentic-UI 把“人类-多智能体协作”玩明白了!
  • MSP430通用电机控制代码(Motor)设计与实现
  • 长序列高时空分辨率月尺度温度和降水数据集(1951-2011)
  • 电磁场与电场、磁场的关系
  • Java 内存模型(JMM)深度解析:理解多线程内存可见性问题
  • Python系列教程242——from与reload合不来
  • 算法笔记·数学·欧拉函数
  • 心有灵犀数
  • nginx的一些配置的意思
  • python训练营day34
  • 苍穹外卖 08导入地址簿模块功能代码用户下单订单支付
  • 浙江专业网站建设商城供应/企业网站设计价格
  • 丰台做网站/自媒体是什么
  • 武汉光谷网站建设/免费下载百度一下
  • 5g创业网站建设/长沙百度开户
  • 编辑不了的wordpress/淮南网站seo
  • 网站制作价格多少钱/seo检测优化