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

C#中的常用集合

目录

一、动态数组ArrayList

二、List

三、栈(Stack)

四、队列(Queue)

五、字典(Dictionary),int>


一、动态数组ArrayList

ArrayList 是 C# 中提供的一种动态数组类,位于命名空间 System.Collections 中。

动态数组(ArrayList)与普通数组不同,它的大小可以动态调整,无需预先定义固定长度。

动态数组(ArrayList)代表了可被单独索引的对象的有序集合,它也允许在列表中进行动态内存分配、增加、搜索、排序各项。

ArrayList 类适用于需要频繁调整大小的数组操作,但由于其非泛型特性,在现代 C# 开发中逐渐被 List<T> 替代。

具体来说ArrayList和List的区别在于ArrayList是一个非泛型集合,List是一个泛型集合,就是说ArrayList中可以存储任意类型的元素,而List只能包含制定类型的元素。

性能方面List更好

现在在C#中一般常用的都是List了,很少用到ArrayList

ArrayList 类的方法和属性

下表列出了 ArrayList 类的一些常用的 属性

属性名称类型描述
Countint获取 ArrayList 中包含的元素数量。
Capacityint获取或设置 ArrayList 的容量(存储空间)。
IsFixedSizebool指示 ArrayList 是否具有固定大小。
IsReadOnlybool指示 ArrayList 是否为只读。
IsSynchronizedbool指示 ArrayList 是否线程安全。
SyncRootobject获取可用于同步访问的对象。

下表列出了 ArrayList 类的一些常用的 方法

方法名称返回类型描述
添加与插入
Add(object value)int将对象添加到 ArrayList 的末尾,返回新元素的索引。
AddRange(ICollection c)void将指定集合的所有元素添加到 ArrayList 的末尾。
Insert(int index, object value)void在指定索引处插入对象。
InsertRange(int index, ICollection c)void在指定索引处插入指定集合的所有元素。
删除
Remove(object value)void移除首次出现的指定对象。
RemoveAt(int index)void移除指定索引处的元素。
RemoveRange(int index, int count)void移除从指定索引开始的指定数量的元素。
Clear()void移除所有元素。
访问与查询
Contains(object item)bool判断 ArrayList 是否包含指定对象。
IndexOf(object value)int获取指定对象首次出现的索引。
LastIndexOf(object value)int获取指定对象最后一次出现的索引。
排序与复制
Sort()void按照默认顺序排序 ArrayList 中的元素。
Sort(IComparer comparer)void按照自定义比较器排序。
Reverse()void反转 ArrayList 中元素的顺序。
CopyTo(Array array)void将 ArrayList 的元素复制到指定数组中。
其他
GetRange(int index, int count)ArrayList获取从指定索引开始的指定数量的元素子集。
ToArray()object[]将 ArrayList 中的元素复制到数组中。
TrimToSize()void将容量调整为实际元素数量以节省内存。
 static void Main(string[] args){ArrayList a = new ArrayList();a.Add("ioio");a.Add(12);a.Add(58.2f);for(int i = 0; i < a.Count; i++){Console.WriteLine(a[i]);}}

二、List

static void Main(string[] args){List<int> a = new List<int>();//添加元素a.Add(12);a.Add(13);a.Add(15);a.Add(18);a.Add(2);shuchu(a);//删除元素13a.Remove(13);shuchu(a);//删除索引1a.RemoveAt(1);shuchu(a);//获得指定对象首次出现的索引Console.WriteLine(a.IndexOf(12));//获得指定对象最后一处出现的索引位置Console.WriteLine(a.LastIndexOf(12));}static void shuchu(List<int> a){//遍历Listforeach(int i in a){Console.Write(i + " ");}Console.WriteLine();}

三、栈(Stack)

 static void Main(string[] args){Stack<int> a = new Stack<int>();//进栈a.Push(1);a.Push(2);a.Push(3);a.Push(4);a.Push(5);//输出shuchu(a);//出栈a.Pop();//输出shuchu(a);//返回栈顶元素Console.WriteLine(a.Peek());}static void shuchu(Stack<int> a){//遍历Listforeach(int i in a){Console.Write(i + " ");}Console.WriteLine();}

四、队列(Queue)

在 C# 中,Queue 是一个先进先出(FIFO, First In First Out)数据结构。

Queue 属于 System.Collections 或 System.Collections.Generic 命名空间,分别提供非泛型和泛型版本的实现。Queue 适用于需要按照入队顺序处理数据的场景。

队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。

特性

  • 先进先出:最早加入队列的元素最先被移除。
  • 动态大小:队列的容量会根据需要动态调整。
  • 泛型支持:通过 Queue<T> 可以存储强类型的元素。
  • 线程安全:Queue 本身不是线程安全的,但可以使用 ConcurrentQueue<T> 实现线程安全。
 static void Main(string[] args){Queue<int> a = new Queue<int>();//添加元素进入队列中a.Enqueue(1);a.Enqueue(2);a.Enqueue(3);a.Enqueue(4);a.Enqueue(5);//输出shuchu(a);//删除先进的a.Dequeue();//输出shuchu(a);//返回队列开头的元素Console.WriteLine("队列开头元素=" + a.Peek());//确定某个元素是否在队列中Console.WriteLine(a.Contains(13));//清空队列中的元素a.Clear();}static void shuchu(Queue<int> a){//遍历Listforeach(int i in a){Console.Write(i + " ");}Console.WriteLine();}

五、字典(Dictionary<string,int>)

static void Main(string[] args){Dictionary<string, int> a = new Dictionary<string, int>();//向字典中添加元素a.Add("第一个键", 11);a.Add("第二个键", 2);a.Add("第三个键", 3);a.Add("第四个键", 4);a.Add("第五个键", 5);shuchu(a);//确定字典中是否含有指定的键Console.WriteLine(a.ContainsKey("第一个键"));//确定字典中是否含有指定的值Console.WriteLine(a.ContainsValue(100));//将带有指定键的键值对给删除,根据键删除a.Remove("第一个键");shuchu(a);//返回一个键的集合var key = a.Keys;//同样的还可以返回一个值的集合,方法是Valuesforeach(var i in key){Console.WriteLine(i);}}static void shuchu(Dictionary<string,int> a){//遍历字典中的数据foreach(var d in a){Console.WriteLine("键="+d.Key + " 值=" + d.Value);}return;}

http://www.lryc.cn/news/518147.html

相关文章:

  • 插入实体自增主键太长,mybatis-plaus自增主键
  • 晨辉面试抽签和评分管理系统之一:考生信息管理和编排
  • 【MySQL】MVCC详解, 图文并茂简单易懂
  • 中国数字化发展的问题与机会
  • 【ROS2】☆ launch之Python
  • 如何稳定使用 O1 / O1 Pro,让“降智”现象不再困扰?
  • zookeeper监听机制(Watcher机制)
  • docker 启动 nacos 单机模式
  • 学习threejs,导入babylon格式的模型
  • 03.MPLS静态LSP配置实验
  • 程序血缘分析技术在工商银行软件工程中的应用
  • 计算机毕业设计Django+Tensorflow音乐推荐系统 音乐可视化 卷积神经网络CNN LSTM音乐情感分析 机器学习 深度学习 Flask 大
  • macOS 使用 FreeRDP 远程访问 Windows:完整指南20250109
  • Java agent
  • Web无障碍
  • 概率基本概念 --- 离散型随机变量实例
  • 毕业项目推荐:基于yolov8/yolov5/yolo11的动物检测识别系统(python+卷积神经网络)
  • 基于 WEB 开发的高校学籍管理系统设计与实现
  • 阿里云发现后门webshell,怎么处理,怎么解决?
  • HTB:Bank[WriteUP]
  • 如何用数字万用表测量是否漏电?
  • 黑马跟学.苍穹外卖.Day04
  • uniapp使用scss mixin抽离css常用的公共样式
  • 用Python解决“A. Accounting”问题:完整教程与代码实现
  • FreeU: Free Lunch in Diffusion U-Net 笔记
  • 腾讯云AI代码助手编程挑战赛-古诗词学习
  • 链式二叉树,递归的暴力美学
  • 计算机网络之---数据传输与比特流
  • 基于单片机的数字电能表(论文+源码)
  • 打造三甲医院人工智能矩阵新引擎(五):精确分割模型篇 Medical SAM 2