c#软件开发学习笔记--集合

C#中集合的概念及用法 【代码】C#中集合的概念及用法。 阅读详情

c#软件开发学习笔记

一、常用集合

1.ArrayList()动态集合

区别 :
1.ArrayList定义完之后数组的长度可以动态添加 ;int[]一旦定义完之后长度是固定的
2.ArrayList存储的是对象类型; int[]数组只能存储相同类型的数据
3.ArrayList存取数据会出现装箱、拆箱操作;int[] 不用装箱和拆箱
4.ArrayList存储数据类型不安全;int[]数据类型安全

//创建一个动态集合对象
ArrayList list1= new ArrayList(); 

//1.添加元素  把1转成对象类型之后 再添加到动态集合里面
//把值类型转成引用类型的过程,就是装箱操作
list1.Add(1);
list1.AddRange(new int[]{1,2,3});

//2.Contains 是否包含某个元素
list1.Contains(1);

//3.IndexOf() 获取某个元素的索引值
list1.IndexOf(1); 
//LastIndexOf 从后往前 获取某个元素的索引值
list1.LastIndexOf("李四");

//4.remove() 移除指定元素
list1.Remove(1);
//RemoveAt移除指定索引的元素
list1.RemoveAt(0);		

//5.Insert()在指定位置添加一个元素
list1.Insert(0, "李四");
//在指定位置添加一个范围数据
list1.InsertRange(2,new int[]{1,2,3});

//6.Clear()清空集合
list1.Clear();

//7.Reverse()颠倒数组的元素
list1.Reverse();

//8.GetRange() 从原集合取出一个子集, 参数1从指定位置开始,参数2截取的长度
ArrayList list2 = list1.GetRange(0, 3);
//setRange()设置指定范围的数据
list1.SetRange(0,new int[] {999,888});

//9.Count 集合数据个数
list1.Count;

//10.遍历集合
foreach (var item in list1)
    Console.WriteLine(item);

2.List<>泛型集合

长度不固定 只能存储相同类型的数据
ArrayList 能存储任意类型的数据,List只能存储相同类型的数据
ArrayList 在存储数据的时候,有一个装箱操作,而List没有装箱操作,理论上会比ArrarList的效率高

//创建List<>泛型集合
List<string> list1 = new List<string>(){ "李张三", "李四" };

//1.添加元素
list1.Add("1") ;
list1.AddRange(new List<string> { "王五"}) ;

//2 移除指定元素
list1.Remove("1") ;
list1.RemoveAt(0) ;//移除指定位置的元素
list1.RemoveAll() //移除指定条件的元素 返回值为移除个数

//3.插入元素
list1.Insert(4, "王五");

//4.IndexOf()获取指定元素的索引值
list1.IndexOf("1") ; 

3.Dictionary<>字典

字典是有key和value的集合 (key 键 value 值)
Dictionary<string,int> string是key键的类型 int value的类型
其中key和索引类似,必须是唯一的,但是索引只能是数字,并且是有序的,key支持多种数据类型

//定义一个字典
Dictionary<int,string> dic = new Dictionary<int,string>();

//1.添加键值对 
dic.Add(0, "张三");//参数1是键 ,参数2是值
dic.Add(1, "李四");

//2.根据键取值
Console.WriteLine(dic[0]);	//其中0是键

//3.指定键移除键值对
dic.Remove(0); 

//4.键值对的个数
Console.WriteLine(dic.Count);

//5.判断是否包含某个键
Console.WriteLine(dic.ContainsKey(0)); 

//6.清空键值对
dic.Clear(); 

//7.遍历字典
 foreach (var item in dic)
     Console.WriteLine(item.Key+":"+item.Value);

二、其他集合

1.Hashtable()哈希表

Hashtable是.NET 早期非泛型键值对哈希集合,基于哈希算法实现快速查找,存在装箱拆箱、类型不安全问题,现已被泛型Dictionary替代。
Hashtable与Dictionary区别:
Dictionary是泛型集合,类型安全,无装箱、拆箱操作,性能较快;Hashtable是非泛型集合,键和值都是 object,可能发生装箱、拆箱,性能较慢

2.SortedList排序列表

SortedList是一种按键自动排序的集合,它通过键值对存储数据,并在添加或更新时根据键的顺序(升序)自动排序。
SortedList 有泛型和非泛型的两种版本。

3.Stack栈

Stack表示一个后进先出的对象集合,当需要对项目进行后进先出的访问时,则可以使用栈。向栈中添加元素称为推入元素,从栈中移除元素称为弹出元素
SortedList 有泛型和非泛型的两种版本。

//泛型栈的定义方式
Stack<int> stack = new Stack<int>(); 

//入栈 推入元素
stack.Push("张三");  
stack.Push("李四");
stack.Push("王五");

//Pop() 删除并返回栈顶对象
stack.Pop()

//Peek() 返回栈顶对象
stack.Peek()

4. Queue队列

队列(Queue )与栈类似,它代表了一个先进先出的对象集合,当您需要对项目进行先进先出访问时,则可以使用队列。向队列中添加元素称为入队(enqueue),从堆栈中移除元素称为出队(deque)。

Queue<string> queue = new Queue<string>();

//向队列的末尾处添加一个对象 入队
queue.Enqueue("hello1");
queue.Enqueue("hello2");
queue.Enqueue("hello3");

//移除并返回在队列开头的对象 出队
queue.Dequeue();

//返回在队列开头的对象
queue.Peek()
深入理解C#中的集合与泛型集合 本文还有配套的精品资源,点击获取 简介:在C#编程中,集合与泛型集合是核心概念,关系到数据的存储和操作。集合如 ArrayList 和 HashTable 提供了灵活的数据管理,但存在类型安全问题。泛型集合如 List<T> 和 Dictionary<TKey, TValue> 则通过预定义类型... 阅读详情

相关推荐

Virbox Protector:全方位守护 Android 应用安全

在数字化浪潮中,Android 应用面临着诸多安全挑战,如破解、篡改、盗版、数据窃取和钓鱼欺诈等。为了应对这些复杂的安全问题,Virbox Protector 应运而生,为 Android 应用提供高强度的专业化安全保护,支持对 APK 和 AAB 文件的加固保护,并兼容 Google Play,助力应用顺利出海。

VBP_2025的博客 997

学习笔记:C#常用容器(集合)

Array(数组) 相信大家一开始学习的时候接触到的集合就是数组了,他也是最简单的集合。 String[] array = new String[3]; array[0] = "张三"; array[1] = "1"; array[2] = "游泳"; for(int i = 0; i < array.Length; i++) { Console.WriteLine(array[i]...

KeithRong的博客 1万+

Ubuntu 24.04中文输入法终极指南:从安装到疑难排解

本文是Ubuntu 24.04中文输入法的完整指南,详细介绍了如何通过图形界面或命令行安装和配置Intelligent Pinyin输入法。内容涵盖IBus框架的运作原理、输入法快捷键调校、模糊音设置,并重点解决了Qt应用无法输入中文的疑难问题,最后提供了Fcitx5备选方案及常见故障的排解方法。

weixin_29294975的博客 1245

C#中的集合

在C#中,集合是存储多个项的数据结构,这些项可以是相同类型或不同类型。C#提供了多种内置集合类型,用于不同的场景和需求。数组(Array)固定大小的元素序列。声明时必须指定大小和类型。列表(List<T>)动态数组,可以根据需要自动调整大小。允许存储重复的元素。提供快速的索引访问。字典(Dictionary<TKey, TValue>)基于键值对的集合,每个元素都包含一个键和一个值。键必须是唯一的,而值则不必。提供快速的查找速度。队列(Queue<T>)先进先出(FIFO)的数据结构。

... 2933

基于FreeSwitch与SIP UA的蓝牙电话坐席系统实战部署

本文详细介绍了如何基于FreeSwitch开源软交换平台,结合SIP UA软电话与蓝牙电话App,在局域网内搭建一套低成本、自主可控的电话坐席系统。文章提供了从环境准备、FreeSwitch安装配置、用户与拨号计划创建,到SIP软电话测试和蓝牙设备接入的完整实战部署流程,并给出了关键优化与排坑指南,适合小微团队或个人开发者构建内部通讯工具。

zeta9的博客 544

【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例

【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例

funfan的博客 4263

C# 都有哪些集合?

C# 提供了多种集合类型来满足不同场景的需求。泛型集合通常是首选,它们提供类型安全和高效操作。对于需要线程安全的场景,可以使用并发集合。而对于简单的场景,非泛型集合依然有其适用的地方。

Leo的博客 1812

制作一款精美的 Qt IFW 安装程序

对于 Qt IFW 来说,默认的安装界面并不吸引人。倘若要制作一款精美的安装程序,这显然是不够的,需要在此基础上进行一系列定制。

青春不老,奋斗不止! 5260

C# 学习笔记

MicrosoftVisualStudio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,是编写C#程序或者说.NET程序最常用的开发工具。因其功能强大、简单易用、速度快、智能度高,被网友戏称宇宙第一IDE。

qq_52144597的博客 2046

Simulink开发项1000例实战专栏--实例148:构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块

电动汽车的动力电池是其核心部件,而电池的健康状态(State of Health, SOH)直接影响车辆的续航能力和使用寿命。SOH通常定义为当前电池容量与初始容量的比值,用百分比表示。通过基于MATLAB/Simulink平台的SOH评估仿真,可以实时监测电池的退化情况,并为电池管理系统(BMS)提供决策依据。本项目旨在构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块,并通过仿真验证SOH评估的准确性。

xiaoheshang_123的博客 342

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

SMFA(自调制特征聚合模块): SMFA模块用于协同建模局部和非局部信息,它分为两个分支:一个是EASA(Efficient Approximation of Self-Attention,简化的自注意力分支),用于捕获非局部信息;另一个是LDE(Local Detail Estimation,局部细节估计分支),用于捕获局部细节。EASA通过对输入特征进行下采样,然后利用全局特征的方差进行调制,再与原始特征进行聚合,提取非局部结构信息。LDE分支则通过卷积操作提取输入特征中的高频局部信息。

qq_64693987的博客 2208

理解C#里面的集合有哪些?怎么用,什么是安全集合?

在C#中,集合是一种用于存储和操作多个元素的数据结构。它们提供了各种操作,如添加、删除、查找等,以及遍历集合中的元素。集合通常根据其实现方式和行为特征进行分类。

Karka_的博客 2047

【WLAN】【调试】如何使用Wireshark分析加密的WiFi数据包

- 当配置网卡为monitor 模式的情况下,可以使用 wireshark来抓取空口报文; - 如果WiFi采用非Open加密方式,则从报文中仅能分析到 802.11协议层,更底层(如DHCP、ICMP、TCP等)被加密,此时可以使用 wireshark 来完成解密。 - 解密之后,可以通过icmp、tcp等关键词过滤报文。

一介草民,只为生活。 2985

c# 中集合的用法

文章目录1. 概述2.非泛型集合3.List\ 泛型集合特点:List\集合的方法:参考文献 1. 概述 C# 中的集合一般分为两种,泛型集合和非泛型集合,我一般非泛型集合用的比较少。主要用泛型集合 C# 中的集合主要有这么几种: ArrayList 表示对象的数组,这些对象的大小会根据需要动态增加。 Hashtable 表示根据键的哈希代码进行组织的键/值对的集合。 Queue 表示对象的先进先出 (FIFO) 集合。 Stack 表示对象的后进先出 (LIFO) 集合。 2.非泛型集合 3

rush_peng的博客 3102

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# 集合

数组和Array类。数组的大小是固定的。如果元素个数是动态的,就应该使用集合类。List和ArrayList是与数组相当的集合类。还有其他类型的集合:队列、栈、链表和字典。集合接口和类型列表队列栈链表有序表字典LookupHashSet位数组性能。

若有博文对您有帮助,欢迎点赞关注,收藏评论。 1690

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【C#进阶】C# 集合类

🌄 hello大家好啊,我是哈桑,本章为大家介绍 C# 中的集合类。集合类是专门用于数据存储和检索的类。在这些类中实现了对列表、队列、哈希表等数据结构的封装以及对操作数据的支持。当在项目中需要对不同场景的数据进存储和操作时,就会使用到集合类。选择合适集合对象,能够在一定程度提升代码的性能和降低内存占用。

好学若饥,谦卑若愚。 2792

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C#学习笔记:集合&字典

01.集合的使用 集合与数组比较类似,都用于存放一组值。 1.1 数组的优劣分析 优势 数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很简单。 劣势 在数组的两个数据间插入数据很麻烦。 在声明数组的时候, 必须同时指明数组的长度,数组的长度过长,会造成内存浪费,数组和长度过短,会造成数据溢出的错误。 1.2ArrayList的使用 ArrayList是.NET Framework提供的用于数据存储和检索的专用类 它是命名空间System.Colle.

薛定谔的猫 3234

C# 学习笔记:集合

集合是一个很基础的东西,这篇博客会把集合及其背后的实现好好梳理一下: 对于所有的集合来说,都需要实现IEnumerable和IEnumerator接口,这两个接口在我们之前的迭代器那一篇博客里已经讲过了,在我们自己实现的手动迭代器里,其内部正是通过数组来进行迭代的管理的,我们今天的博客也从数组讲起: 数组 数组是将多个数据项当做一个集合来处理的机制。在C#中,所有的数组都派生自Syst...

MEIGAZAMU 602

C#集合接口与集合类

C#开发经常用到.NET框架为我们提供的集合接口和集合类,接下来做一个总结,如有差错,希望各位大神指正。 首先是集合接口,自己画了一张图(嘿嘿,有点丑),来说明集合接口的继承关系。 个人觉得,了解集合接口,首先要把握他们的继承关系。如上图,所有的集合接口和集合类都继承/实现IEnumerable接口。IEnumerable只有一个方法GetEnumer...

qb1688的专栏 3767

C#泛型集合

C#基础泛型集合

ET0783的博客 2728

C# 各种集合

C# 各种集合

againknow的博客 1827

C#学习笔记16-集合之Hashtable与Dictionary

C#学习笔记16-集合之Hashtable与DictionaryHashtable集合基本语法及方法创建对象添加元素访问元素Dictionary集合基本语法 Hashtable集合 Hashtable几个与上文提到的ArrayList集合(详情见文章C#学习笔记15-集合之ArrayList)存在许多相同的特点 其同样具有集合的多个特点,不同的是,Hashtable是一种键值对集合。 什么是键值对...

weixin_44985601的博客 295
上一篇: c#软件开发学习笔记--lambda表达式、数组排序
下一篇: c#软件开发学习笔记--面向对象
Z599817841
博客等级 码龄4年 12粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值