C#集合和数据结构,随笔记录

news2024/11/19 0:48:19

C#集合和数据结构

  • System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表/链表、位数组、哈希表、队列和堆栈)的集合

            

System.Collections.Generic命名空间:

  • 所有集合都直接或间接基于ICollection接口

https://imgs.itxueyuan.com/28211801-aeaddc8243394d34851a127aad881a29.png

  1. 列表类集合类型: 集合类型基于 IList 接口,集合中的每个元素都只包含一个值。列表类集合类型包括:Array, ArrayList, List<T>.

ArrayList或List<T>用于构建复杂的数组或列表集合。相对于Array的容量固定性,ArrayList或List<T>的容量可根据需要自动扩充。ArrayList或List<T>还提供添加、插入或移除某一范围元素的方法

  1. ArrayList列表类型的主要成员:。

用于添加元素对象的方法Add、AddRange、Insert和InsertRange

用于删除元素对象的方法Remove、RemoveAt、RemoveRange和Clear

用于元素对象查找的方法IndexOf、LastIndexOf、Contains和BinarySearch

用于数据排序的方法Sort和Reverse

用于拷贝和转换的方法Clone、CopyTo和ToArray

Capacity属性用于获取或设置可包含的元素数

Count属性用于获取实际包含的元素数

  1. List<T>表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索、排序和操作的方法; List<T>类是对应于 ArrayList 的泛型类。该类使用大小可按需动态增加的数组实现 IList<T>泛型接口, List<T>泛型类的主要成员:

添加元素对象的方法Add、AddRange、Insert和InsertRange

删除元素对象的方法Remove、RemoveAt、RemoveRange、RemoveAll和Clear

元素对象查找的方法BinarySearch、Contains、Exists、Find、FindAll、FindIndexFindLast、FindLastIndex、IndexOf和LastIndexOf

数据排序的方法Sort和Reverse

拷贝和转换的方法ConvertAll<TOutput>和CopyTo

Capacity属性用于获取或设置包含的元素数

Count属性用于获取实际包含的元素数

  1. 字典类集合类型

字典类集合类型基于IDictionary / IDictionary<TKey, TValue > 接口,集合中的每个元素都包含键/值对。字典类集合类型包括:

    1. Hashtable集合类型
    2. Dictionary 集合类型
    3. SortedList集合类型
    4. SortedList<TKey, TValue>集合类型
    5. SortedDictionary<TKey, TValue> 集合类型

1.1 Hashtable哈希表

  • Hashtable表示键/值(key/value)对的集合,这些键/值对根据键的哈希代码进行组织
  • Hashtable中key和value键值均为object类型
  • Hashtable集合中每个键(key)必须是唯一的,并且添加后,键(key)就不能更改。键(key)不能为 null 引用,但值(value)可以.
  • Hashtable主要成员如下:

添加元素对象的方法Add

删除元素对象的方法Remove和Clear

元素对象查找的方法Contains、ContainsKey和ContainsValue

拷贝和转换的方法CopyTo

Count属性用于获取包含在Hashtable中的键/值对的数目

Keys属性用于获取键的集合

Values属性用于获取值的集合

           

  • 可以利用foreach语句和DictionaryEntry类型遍历Hashtable中每个键/值对:

  

1.2 字典Dictionary<tkey,Tvalue>

  • Dictionary<TKey, TValue>泛型类表示键/值(key/value)对的集合。其中,TKey表示字典中的键的类型,TValue表示字典中的值的类型
  • Dictionary<TKey, TValue>泛型类提供了从一组键到一组值的映射
  • Dictionary<TKey, TValue>集合中的每个元素都是一个KeyValuePair<TKey, TValue>结构,由一个值及其相关联的键组成
  • Dictionary<TKey, TValue>泛型类的主要成员:

添加元素对象的方法Add

删除元素对象的方法Remove、Clear

元素对象查找的方法Contains、ContainsKey和ContainsValue

Count属性获取包含在Dictionary中的键/值对的数目

Item属性获取或设置与指定的键相关联的值

Keys属性获取键的集合

Values属性获取值的集合

  • 可以利用foreach语句和KeyValuePair<TKey, TValue>类型遍历Dictionary<TKey, TValue>中每个键/值对

1.3 排序列表sortedList

  • SortedList表示键/值(key/value)对的集合
  • SortedList<TKey, TValue>是其泛型版本,TKey表示字典中的键的类型,TValue表示字典中的值的类型
  • SortedList集合中每个元素都是一个可作为 DictionaryEntry 对象进行访问的键/值对
  • SortedList集合中每个键(key)必须是唯一的。键不能为 null 引用,但值可以
  • SortedList类的主要成员:

添加元素对象的方法Add

删除元素对象的方法Remove、RemoveAt和Clear

元素对象查找的方法Contains、ContainsKey、ContainsValue、IndexOfKey和ndexOfValue

对象设置和获取的方法GetByIndex、GetKey、GetKeyList、GetValueList和SetByIndex

拷贝和转换的方法CopyTo

Capacity属性用于获取或设置可包含的元素数

Count属性用于获取包含的键/值对的数目

Keys属性用于获取键的集合;Values属性用于获取值的集合

1.4 泛型排序列表SortedList<TKey, TValue>

  • SortedList<TKey, TValue>泛型类表示键/值(key/value)对的集合,以基于键的排序顺序维护元素,并可按照键和索引访问。其中,TKey表示字典中的键的类型,TValue表示字典中的值的类型
  • SortedList<TKey, TValue>泛型类提供了从一组键到一组值的映射。SortedList<TKey, TValue>集合中的每个元素都是一个KeyValuePair<TKey, TValue>结构,由一个值及其相关联的键组成。通过键可以快速检索值。SortedList<TKey, TValue>中的每个键必须是唯一的。键(key)不能为空,但值(value)可以
  • SortedList<TKey, TValue>泛型类的主要成员:

-添加元素对象的方法Add

-删除元素对象的方法Remove、RemoveAt和Clear

-元素对象查找的方法ContainsKey、ContainsValue、IndexOfKey和IndexOfValue

-Capacity属性用于获取或设置可包含的元素数

-Count属性用于获取包含的键/值对的数目

-Keys属性用于获取键的集合;Values属性用于获取值的集合

1.5 排序字典SortedDictionary<TKey, TValue>

  • SortedDictionary<TKey, TValue>泛型类表示键/值(key/value)对的集合,以基于键的排序顺序维护元素。其中,TKey表示字典中的键的类型,TValue表示字典中的值的类型
  • SortedDictionary<TKey, TValue>泛型类提供了从一组键到一组值的映射。SortedDictionary<TKey, TValue>集合中的每个元素都是一个KeyValuePair<TKey, TValue>结构,由一个值及其相关联的键组成。通过键可以快速检索值。SortedDictionary <TKey, TValue>中的每个键必须是唯一的。键(key)不能为空,但值(value)可以
  • SortedDictionary<TKey, TValue>泛型类的主要成员:

-添加元素对象的方法Add

-删除元素对象的方法Remove和Clear

-元素对象查找的方法ContainsKey和ContainsValue

-Count属性用于获取包含的键/值对的数目

-Keys属性用于获取键的集合;Values属性用于获取值的集合

          

  1. 6队列集合类型Queue类和Queue<T>泛型类
  • Queue类和Queue<T>泛型类表示对象的先进先出(FIFO,First In First Out)集合
  • Queue类表示对象的先进先出(FIFO,First In First Out)集合。存储在 Queue 中的对象在一端(Queue 的结尾处)插入,从另一端(Queue的开始处)移除
  • Queue类和Queue<T>泛型类的主要成员:

-queue方法将对象添加到Queue的结尾处

-Peek方法返回位于Queue开始处的对象

-Dequeue方法移除并返回位于Queue开始处的对象

-Clear方法从Queue中移除所有对象

-Contains方法确定某元素是否在Queue中

-Count属性用于获取元素的数目

以上demo,输出结果:10 20 30 40,如下图是队列操作的示意图:

1.7 HashSet<T>

//HashSet<T>泛型类是set 集合, 是一组不重复出现且无特定顺序的元素,如果添加的元素集合中已经存在,则不会添加进去,也不会报错.
//用于集合运算的方法UnionWith(并集)、IntersectWith(交集)、ExceptWith(差集)和SymmetricExceptWith(对称差集)
HashSet<int> even = new HashSet<int> { 1, 2, 4, 6, 8,9,10,1 };
//添加不重复的元素,若集合内有该元素,不添加
even.Add(6);
HashSet<int> odd = new HashSet<int> { 1, 3, 5, 7, 9,10,11 };
//并集
even.UnionWith(odd);
//排序
even = even.OrderBy(i => i).ToHashSet();
//删除元素
even.Remove(6);
//按条件删除元素
even.RemoveWhere(i => i % 2 == 0);
//CopyTo,将集合复制到一个指定的数组中,了解下
int[] numbs = new int[] { 10, 20, 30,40,50,60,70,80,90,100 };
even.CopyTo(numbs,numbs.Length-even.Count);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1521448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3+TS+Vite 找不到模块“@/components/xxx/xxx”或其相应的类型声明

引入vue文件时文件是存在的&#xff0c;引入路径也是对的&#xff0c;报找不到模块&#xff0c;有一些解决方案是在tsconfig.json里面做一些配置&#xff0c;大家可以自行百度&#xff08;不知道是不是我百度的不对&#xff0c;我的没有解决&#xff09;还有一种是在项目根目录…

免密ssh密钥登录Linux该如何设置

我们在使用ssh客户端远程连接Linux服务器时&#xff0c;为了考虑安全方面的因素&#xff0c;通常使用密钥的方式来登录。密钥分为公钥和私钥&#xff0c;这两把密钥可以互为加解密。公钥是公开的&#xff0c;私钥是由个人自己持有&#xff0c;并且必须妥善保管和注意保密。 Li…

安装python、pycharm,打好基础,准备飞起

python安装使用 安装python安装包 以下为自定义安装python安装包&#xff0c;无特殊要求可直接进行安装。 勾选Add Python 3.6 to PATH&#xff0c; 然后点击 Customize installation&#xff0c;进行自定义安装。 所有的都勾上&#xff0c;然后点击Next。 可选择自己需要…

perl 用 XML::DOM 解析 Freeplane.mm文件,生成测试用例.csv文件

Perl 官网 www.cpan.org 从 https://strawberryperl.com/ 下载网速太慢了 建议从 https://download.csdn.net/download/qq_36286161/87892419 下载 strawberry-perl-5.32.1.1-64bit.zip 约105MB 解压后安装.msi&#xff0c;装完后有520MB&#xff0c;建议安装在D:盘。 运行 …

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:ListItemGroup)

该组件用来展示列表item分组&#xff0c;宽度默认充满List组件&#xff0c;必须配合List组件来使用。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。该组件的父组件只能是List。 使用说明 当List…

拿捏指针(二)

个人主页&#xff1a;秋邱博客 所属栏目&#xff1a;C语言 &#xff08;感谢您的光临&#xff0c;您的光临蓬荜生辉&#xff09; 目录 前言 数组与指针 数组名的理解 指针数组与数组指针 指针数组 数组指针 数组传参 一维数组传参的本质 二维数组传参的本质 二维数组…

Spring源码流程图

1.IOC源码 流程图地址&#xff1a;https://www.processon.com/view/link/626ce8dc0e3e742d46229977 2.AOP源码 流程图地址&#xff1a;https://www.processon.com/view/link/627134571efad45d06d6a1de 3.事务源码 流程图地址&#xff1a;https://www.processon.com/view/li…

Android中compile,implementation和api的区别,以及gradle-wrapper的详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; compile,implementation和api的区别和其作用 compile和api会进行传递…

AI赋能写作:AI大模型高效写作一本通

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…

15.7k stars一个实用型OCR,支持80多种语言

一个实用型 OCR,支持 80 多种语言和所有流行的书写脚本&#xff0c;包括&#xff1a;拉丁文、中文、阿拉伯文、梵文、西里尔文等。 特点 支持本地或云/API部署 准确度提高到 99% 以上 完全可定制,支持 80 多种语言 支持表格识别 二维码/条码提取识别 GitHub数据 15.7k s…

PS学习-放大图片保持清晰

快捷键冲突所以有的不能截屏 500就是原图的5倍 还很清晰

如何本地搭建hMailServer邮件服务

文章目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpola…

获取远程管理软件保存的凭据

点击星标&#xff0c;即时接收最新推文 本文选自《内网安全攻防&#xff1a;红队之路》 扫描二维码五折购书 内网敏感数据的发现 内网的核心敏感数据&#xff0c;不仅包括数据库、电子邮件&#xff0c;还包括个人数据及组织的业务数据、技术数据等。可以说&#xff0c;价值较高…

C语言数据结构基础笔记——树、二叉树简介

1.树 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 &#xff08;图片来源于网络&#xff09;…

【Unity】persistentDataPath、streamingAssetsPath和dataPath

介绍 我们在用Unity进行开发时&#xff0c;资源路径是我们最常用到的&#xff0c;下面我就来简单介绍一下几种常用的路径。 1.dataPath dataPath是包含游戏数据文件夹的路径&#xff0c;是app程序包安装路径 Windows: xxx /Assets &#xff08;如下图&#xff09; Mac: xxx…

ideaSSM失物招领管理系统网页模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 失物招领管理系统是一套完善的完整信息管理系统&#xff0c;结合SSM框架完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数…

计算机网络笔记(湖科大教书匠版本)

目录 第一章、 ①三种交换方式 ②计算机网络的定义和分类 ③计算机网络的性能指标 1.速率 2.带宽 3.吞吐量 4.时延 5.时延带宽积 6.往返时间 7.利用率 8.丢包率 ④常见的三种计算机网络体系结构​编辑 ⑤计算机网络体系结构分层的必要性​编辑 第二章、物理层 ①…

【Java】常用类和基础API

文章目录 一、String的特性二、String的内存结构2.1 拼接2.2 new 三、String的常用API-13.1 构造器 四、String的常用API-24.1 常用方法4.2 查找4.3 字符串截取4.4 和字符/字符数组相关4.5 开头与结尾4.6 替换 五、StringBuffer、StringBuilder5.1 StringBuilder、StringBuffer…

应对磁盘管理挑战:Linux磁盘分区挂载命令实践指南

前言 在今天的技术世界中&#xff0c;Linux已成为广泛使用的操作系统之一&#xff0c;而对于运维人员和开发人员来说&#xff0c;磁盘分区挂载是一个至关重要的任务。正确地管理和配置磁盘分区挂载可以极大地提升系统的性能和可靠性&#xff0c;同时也能确保数据的安全性。 通…

【数据结构与算法】:选择排序与快速排序

&#x1f525;个人主页&#xff1a; Quitecoder &#x1f525;专栏&#xff1a;数据结构与算法 我的博客即将同步至腾讯云开发者社区&#xff0c;邀请大家一同入驻&#xff1a;腾讯云 欢迎来到排序的第二个部分&#xff1a;选择排序与快速排序&#xff01; 目录 1.选择排序1.…