C#集合和数据结构,随笔记录没空排版,,,

news2024/10/5 18:13:20

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> 集合类型

4.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中每个键/值对:

  

4.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>中每个键/值对

4.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属性用于获取值的集合

4.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属性用于获取值的集合

4.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. 队列集合类型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,如下图是队列操作的示意图:

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

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

相关文章

网络通信另个角度的认识(进程间通信),端口号(为什么要有,和pid的关系,如何封装,和进程的定位原理+对应关系)客户端如何拿到服务端的port

目录 另一个角度认识网络通信 端口号 引入 -- 为什么要有端口号 问题 解决 端口号和pid 举例 介绍 分类 知名端口 注册端口 动态端口 客户端如何知道服务端的端口号 封装端口号 定位原理 进程和端口号的对应关系 数据如何被上层进程读到 另一个角度认识网络…

抽样算法——【数据科学与工程算法基础】

一、前言 这是课程的第二章节——抽样算法&#xff0c;主要分为三类。 详情可参考&#xff1a; 数据科学的算法基础——学习记录跳转中心 二、正篇 1.系统抽样 课本只介绍了最简单的——等距抽样。 直线等距抽样&#xff08;Nn*k&#xff09;&#xff1a;即总体个数可以被抽…

webgl instance 绘制

webgl instance 绘制 效果: key1: 创建实例缓存 function createMesh() {for (let i 0; i < NUM_CUBE; i) {const angle i * 2 * Math.PI / NUM_CUBE;const x Math.sin(angle) * RADIUS;const y 0;const z Math.cos(angle) * RADIUS;cubes[i] {scale: new THREE.V…

从零开始实现ORB_SLAM2编译与运行

文章目录 前言一、前期准备二、库安装1.engin库安装方法1&#xff1a;apt安装方法2&#xff1a;源码安装 2.Pangolin库安装3.openCV源码安装 三、build编译四、测试五、ROS安装六、build-ros编译七、测试总结 前言 ORB_SLAM2作为一种优秀的开源VSLAM解决方案&#xff0c;以其高…

高浓度纸浆废水如何处理达标排放

在纸浆生产过程中&#xff0c;高浓度纸浆废水是一个常见的环境污染源&#xff0c;其处理对于环境保护和可持续发展至关重要。为了实现高浓度纸浆废水的达标排放&#xff0c;必须采用一系列专业的处理技术&#xff0c;以确保废水处理的高效性和环境友好性。 首先&#xff0c;通过…

Oracle之ADG与DG的区别?

在上云后的Oracle数据灾备场景中&#xff0c;我们经常听到DBA迁移工程师讲到“在这个项目中用ADG进行数据实时备份&#xff0c;ADG比DG更好&#xff01;”。究竟ADG作Oracle数据灾备的优势在什么地方&#xff1f; 一、ADG主要解决了DG时代读写不能并行的问题 DG时代的数据同步…

Kutools For Excel | 新增 300+ 高级功能

Kutools For Excel 是一个便捷的 Excel 插件&#xff0c;具有 300 多种高级功能&#xff0c;可将各种复杂的任务简化为在 Excel 中的几次单击。 功能强大且用户友好的加载项将为 Excel 用户节省大量工作时间&#xff0c;并大大提高工作效率。支持 Excel 2021 / 2019 / 2016 / …

【Python使用】python高级进阶知识md总结第3篇:静态Web服务器-返回指定页面数据,静态Web服务器-多任务版【附代码文档】

python高级进阶全知识知识笔记总结完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;操作系统&#xff0c;虚拟机软件&#xff0c;Ubuntu操作系统&#xff0c;Linux内核及发行版&#xff0c;查看目录命令&#xff0c;切换目录命令&#xff0c;绝对路径和相对…

‘UnityEngine.Application‘ does not contain a definition for isBatchMode

unity 2017.4.37f1. 解决办法: Try to replace Application.isBatchMode with UnityEditorInternal.InternalEditorUtility.inBatchMode

NCDA大赛交互网页设计优秀作品有哪些?

现在&#xff0c;越来越多 UX/UI 设计者将互动 / 在其网站设计中添加动画元素(如鼠标悬停状态、音频或视频媒体、滚动交互等。).这样一方面可以让网站本身更加华丽有趣&#xff0c;吸引更多的访问者&#xff0c;激励访问者更加关注和阅读网站内容。这就是为什么互动网站设计已经…

机器学习开源分子生成系列(1)-DeepFrag的本地部署及使用

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …进入 文章目录 前言一、DeepFrag是什么&#xff1f;二、conda中安装DeepFrag CLI环境1. 创建环境并激活2. 下载pre-trained model3. DeepFrag CLI 使用方法必需参数&#xff1a;可选参数&#xff1a; 4. DeepFrag CLI 使用…

猫头虎分享已解决Bug || 网络攻击(Network Attack):DDoSError, NetworkIntrusion

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

2048游戏代码

创建一个2048游戏的最小完整实现需要HTML、CSS和JavaScript。以下是一个简单的实现&#xff0c;你可以将这些代码复制到本地文件中&#xff0c;比如命名为2048.html&#xff0c;然后用浏览器打开这个文件来玩游戏。 <html> <head><title>2048 Game</title…

AJAX入门:前端连接后端

一.概述 AJAX即Asynchronous Javascript And XML&#xff0c;即异步JavaScript和XML。 AJAX作用&#xff1a; 与服务器进行数据交换&#xff1a;通过Ajax可以给服务器发送请求&#xff0c;并获取服务器响应的数据。&#xff08;使用Ajax和服务器进行通信&#xff0c;就可以使用…

Java_6 数组拆分 I

数组拆分 I 给定长度为 2n 的整数数组 nums &#xff0c;你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) &#xff0c;使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最大总和 。 示例 1&#xff1a; 输入&#xff1a;nums [1,4,3,2] 输出&#…

如何看待Linux桌面操作系统的火速增长

文章目录 1. 使用过Linux桌面操作系统吗&#xff1f;Linux系统有什么优势&#xff1f;对于Linux桌面操作系统份额的火速增长怎么看呢认为未来Linux会主导桌面操作系统吗&#xff1f; #如何看待Linux桌面操作系统的火速增长&#xff1f; 1. 使用过Linux桌面操作系统吗&#xff…

蓝桥杯[OJ 2928]分糖果-CPP(贪心、字典序)

目录 一、题目描述&#xff1a; 二、整体思路 (一)字典序比较规则 (二)正确理解题意 &#xff08;三&#xff09;分类讨论 三、代码 一、题目描述&#xff1a; 二、整体思路 (一)字典序比较规则 首先要知道字典序是怎么比较大小的&#xff0c;简单来说按以下次序进行比较&am…

污水磷资源回收工艺及海普树脂除杂

#污水磷资源回收工艺及海普树脂除杂 ​磷矿资源也是一种不可再生资源&#xff0c;目前磷矿产业仍在扩张&#xff0c;随着新能源行业磷酸铁锂电池的大范围应用&#xff0c;对磷的需求量仍在增加。基于污水中相对较高的磷负荷&#xff0c;从污泥焚烧灰分中回收磷显得十分有必要&a…

iTOP-3588开发板快速启动手册Windows安装串口终端软件创建串口会话

双击上图中红框的应用程序后&#xff0c;软件会启动&#xff0c;界面启动后如下图所示&#xff1a; 下面来创建第一个SSH 会话。点击菜单栏 「会话」 --> 「新建会话」&#xff0c;即可弹出 「会话设置」 对话框&#xff0c;如下图所示&#xff1a; 在会话设置框里面选择串口…

如何提高API接口的性能和设计安全可靠的API

如何提高API接口的性能 下图显示了提高 API 性能的 5 种常见技巧。 分页 这是在结果集较大时常用的优化方法。结果会以流式方式传回客户端&#xff0c;以提高服务响应速度。 异步日志 同步日志每次调用都要处理磁盘&#xff0c;会降低系统速度。异步日志会先将日志发送到无…