当前位置: 首页 > 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;}

相关文章:

C#中的常用集合

目录 一、动态数组ArrayList 二、List 三、栈&#xff08;Stack&#xff09; 四、队列&#xff08;Queue&#xff09; 五、字典&#xff08;Dictionary&#xff09;,int> 一、动态数组ArrayList ArrayList 是 C# 中提供的一种动态数组类&#xff0c;位于命名空间 Syste…...

插入实体自增主键太长,mybatis-plaus自增主键

1、问题 spring-boot整合mybtais执行insert语句时&#xff0c;主键id为长文本数据。 2、分析问题 1)数据库主键是否自增 2&#xff09;数据库主键的种子值设置的多少 3、解决问题 1&#xff09;数据库主键设置的时自增 3&#xff09;种子值是1 所以排查是数据库的问题 4、继…...

晨辉面试抽签和评分管理系统之一:考生信息管理和编排

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…...

【MySQL】MVCC详解, 图文并茂简单易懂

欢迎来到啊妮莫的学习小屋 祝读本文的朋友都天天开心呀 目录 MVCC简介快照读与当前读快照读当前读 隔离级别隐藏字段和Undo Log版本链✨MVCC原理--ReadView✨ReadView简介设计思路适用隔离级别重要内容 ReadView规则MVCC整体流程 不同隔离级别下的MVCC读已提交可重复读 总结 M…...

中国数字化发展的问题与机会

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案,帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、埃域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能,如智能化推荐、…...

【ROS2】☆ launch之Python

☆重点 ROS1和ROS2其中一个很大区别之一就是launch的编写方式。在ROS1中采用xml格式编写launch&#xff0c;而ROS2保留了XML 格式launch&#xff0c;还另外引入了Python和YAML 编写方式。选择哪种编写取决于每位开发人员的爱好&#xff0c;但是ROS2官方推荐使用Python方式编写…...

如何稳定使用 O1 / O1 Pro,让“降智”现象不再困扰?

近期&#xff0c;不少朋友在使用 O1 或 O1 Pro 模型时&#xff0c;都会碰到“降智”或“忽高忽低”的智力波动&#xff0c;比如无法识图、无法生成图片、甚至回答准确度也不稳定。面对这些问题&#xff0c;你是不是也感到头疼呢&#xff1f; 为了找到更可靠的解决办法&#xf…...

zookeeper监听机制(Watcher机制)

文章目录 引言I zookeeper监听机制Watcher机制实现分布式的通知功能触发事件种类Watcher的三个过程II watch机制特点一次性触发事件封装event异步发送先注册再触发常见的通知状态和事件类型III 应用案例(Kafka)Kafka的消息模型Kafka在Zookeeper中保存的元数据Kafka 基于Contr…...

docker 启动 nacos 单机模式

docker 启动 nacos 单机模式 # 拉取镜像# 启动&#xff0c;如果不拉镜像会自动拉取最新的 image docker run --name standalong_nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODEstandalone -d nacos/nacos-server# 状态查看外部访问验证 输入部署的 docker ip 地址以及…...

学习threejs,导入babylon格式的模型

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.BabylonLoader babyl…...

03.MPLS静态LSP配置实验

MPLS静态LSP配置实验 1、实验环境2、基础配置开启全局mpls接口下开启mpls配置静态LSP配置FEC从1.1.1.1到3.3.3.3配置FEC从3.3.3.3到1.1.1.13、信息查看查看LFIB表(标签转发信息表)查看FIB表(转发信息表)查看详细FFIB表tracert lsp iptracert -vping lsp ip4、抓包验证1、实…...

程序血缘分析技术在工商银行软件工程中的应用

当前,随着软件领域技术更新换代速度的日益加快,市场需求也变得更加多样化和个性化,业界普遍通过加速产品迭代来满足客户需求,但在此过程中也暴露出一些研发管理痛点问题,如服务和程序类资产信息分散于各个不同的应用和系统中,信息归集费时费力;设计、开发和测试人员无法…...

计算机毕业设计Django+Tensorflow音乐推荐系统 音乐可视化 卷积神经网络CNN LSTM音乐情感分析 机器学习 深度学习 Flask 大

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

macOS 使用 FreeRDP 远程访问 Windows:完整指南20250109

&#x1f5a5;️ macOS 使用 FreeRDP 远程访问 Windows&#xff1a;完整指南 引言 随着远程办公需求的快速增长&#xff0c;跨平台远程管理已经成为不可或缺的技能之一。作为一款开源轻量的远程桌面协议实现工具&#xff0c;FreeRDP 为 macOS 用户提供了一个简单、高效的解决…...

Java agent

‌ Java Agent是一种特殊的Java程序&#xff0c;它可以在JVM启动时或运行时动态加载&#xff0c;用于监控和修改其他Java应用程序的行为‌。通过Java Agent&#xff0c;开发者可以在不修改目标应用程序源码的情况下&#xff0c;动态地插入功能&#xff0c;如性能分析、日志记录…...

Web无障碍

文章目录 &#x1f7e2;Web Accessibility-Web无障碍&#x1f7e2;一、Web Accessibility-Web1. web无障碍设计2. demo3.使用相关相关开源无障碍工具条(调用可能会根据网络有点慢) 如有其他更好方案&#xff0c;可以私信我哦✒️总结 &#x1f7e2;Web Accessibility-Web无障碍…...

概率基本概念 --- 离散型随机变量实例

条件概率&独立事件 随机变量 - 离散型随机变量 - 非离散型随机变量 连续型随机变量奇异性型随机变量 概率表示 概率分布函数概率密度函数概率质量函数全概率公式贝叶斯公式 概率计算 数学期望方差协方差 计算实例 假设有两个离散型随机变量X和Y&#xff0c;它们代…...

毕业项目推荐:基于yolov8/yolov5/yolo11的动物检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...

基于 WEB 开发的高校学籍管理系统设计与实现

标题:基于 WEB 开发的高校学籍管理系统设计与实现 内容:1.摘要 摘要&#xff1a;随着信息技术的不断发展&#xff0c;高校学籍管理系统的信息化建设已成为必然趋势。本文以高校学籍管理系统为研究对象&#xff0c;探讨了基于 WEB 开发的高校学籍管理系统的设计与实现。通过对系…...

阿里云发现后门webshell,怎么处理,怎么解决?

当收到如下阿里云通知邮件时&#xff0c;大部分管理员都会心里一惊吧&#xff01;出现Webshell&#xff0c;大概是网站被入侵了。 尊敬的 xxxaliyun.com&#xff1a; 云盾云安全中心检测到您的服务器&#xff1a;47.108.x.xx&#xff08;xx机&#xff09;出现了紧急安全事件…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...