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 类的一些常用的 属性:
| 属性名称 | 类型 | 描述 |
|---|---|---|
Count | int | 获取 ArrayList 中包含的元素数量。 |
Capacity | int | 获取或设置 ArrayList 的容量(存储空间)。 |
IsFixedSize | bool | 指示 ArrayList 是否具有固定大小。 |
IsReadOnly | bool | 指示 ArrayList 是否为只读。 |
IsSynchronized | bool | 指示 ArrayList 是否线程安全。 |
SyncRoot | object | 获取可用于同步访问的对象。 |
下表列出了 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 三、栈(Stack) 四、队列(Queue) 五、字典(Dictionary),int> 一、动态数组ArrayList ArrayList 是 C# 中提供的一种动态数组类,位于命名空间 Syste…...
插入实体自增主键太长,mybatis-plaus自增主键
1、问题 spring-boot整合mybtais执行insert语句时,主键id为长文本数据。 2、分析问题 1)数据库主键是否自增 2)数据库主键的种子值设置的多少 3、解决问题 1)数据库主键设置的时自增 3)种子值是1 所以排查是数据库的问题 4、继…...
晨辉面试抽签和评分管理系统之一:考生信息管理和编排
晨辉面试抽签和评分管理系统(下载地址:www.chenhuisoft.cn)是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…...
【MySQL】MVCC详解, 图文并茂简单易懂
欢迎来到啊妮莫的学习小屋 祝读本文的朋友都天天开心呀 目录 MVCC简介快照读与当前读快照读当前读 隔离级别隐藏字段和Undo Log版本链✨MVCC原理--ReadView✨ReadView简介设计思路适用隔离级别重要内容 ReadView规则MVCC整体流程 不同隔离级别下的MVCC读已提交可重复读 总结 M…...
中国数字化发展的问题与机会
橙蜂智能公司致力于提供先进的人工智能和物联网解决方案,帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、埃域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能,如智能化推荐、…...
【ROS2】☆ launch之Python
☆重点 ROS1和ROS2其中一个很大区别之一就是launch的编写方式。在ROS1中采用xml格式编写launch,而ROS2保留了XML 格式launch,还另外引入了Python和YAML 编写方式。选择哪种编写取决于每位开发人员的爱好,但是ROS2官方推荐使用Python方式编写…...
如何稳定使用 O1 / O1 Pro,让“降智”现象不再困扰?
近期,不少朋友在使用 O1 或 O1 Pro 模型时,都会碰到“降智”或“忽高忽低”的智力波动,比如无法识图、无法生成图片、甚至回答准确度也不稳定。面对这些问题,你是不是也感到头疼呢? 为了找到更可靠的解决办法…...
zookeeper监听机制(Watcher机制)
文章目录 引言I zookeeper监听机制Watcher机制实现分布式的通知功能触发事件种类Watcher的三个过程II watch机制特点一次性触发事件封装event异步发送先注册再触发常见的通知状态和事件类型III 应用案例(Kafka)Kafka的消息模型Kafka在Zookeeper中保存的元数据Kafka 基于Contr…...
docker 启动 nacos 单机模式
docker 启动 nacos 单机模式 # 拉取镜像# 启动,如果不拉镜像会自动拉取最新的 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格式的模型
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言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 大
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
macOS 使用 FreeRDP 远程访问 Windows:完整指南20250109
🖥️ macOS 使用 FreeRDP 远程访问 Windows:完整指南 引言 随着远程办公需求的快速增长,跨平台远程管理已经成为不可或缺的技能之一。作为一款开源轻量的远程桌面协议实现工具,FreeRDP 为 macOS 用户提供了一个简单、高效的解决…...
Java agent
Java Agent是一种特殊的Java程序,它可以在JVM启动时或运行时动态加载,用于监控和修改其他Java应用程序的行为。通过Java Agent,开发者可以在不修改目标应用程序源码的情况下,动态地插入功能,如性能分析、日志记录…...
Web无障碍
文章目录 🟢Web Accessibility-Web无障碍🟢一、Web Accessibility-Web1. web无障碍设计2. demo3.使用相关相关开源无障碍工具条(调用可能会根据网络有点慢) 如有其他更好方案,可以私信我哦✒️总结 🟢Web Accessibility-Web无障碍…...
概率基本概念 --- 离散型随机变量实例
条件概率&独立事件 随机变量 - 离散型随机变量 - 非离散型随机变量 连续型随机变量奇异性型随机变量 概率表示 概率分布函数概率密度函数概率质量函数全概率公式贝叶斯公式 概率计算 数学期望方差协方差 计算实例 假设有两个离散型随机变量X和Y,它们代…...
毕业项目推荐:基于yolov8/yolov5/yolo11的动物检测识别系统(python+卷积神经网络)
文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...
基于 WEB 开发的高校学籍管理系统设计与实现
标题:基于 WEB 开发的高校学籍管理系统设计与实现 内容:1.摘要 摘要:随着信息技术的不断发展,高校学籍管理系统的信息化建设已成为必然趋势。本文以高校学籍管理系统为研究对象,探讨了基于 WEB 开发的高校学籍管理系统的设计与实现。通过对系…...
阿里云发现后门webshell,怎么处理,怎么解决?
当收到如下阿里云通知邮件时,大部分管理员都会心里一惊吧!出现Webshell,大概是网站被入侵了。 尊敬的 xxxaliyun.com: 云盾云安全中心检测到您的服务器:47.108.x.xx(xx机)出现了紧急安全事件…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
