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

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);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis数据结构对象(一)

对象 概述 Redis并没有直接使用简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等这些数据结构来实现键值对数据库&#xff0c;而是基于这些数据结构创建了一个对象系统&#xff0c;这个系统包含字符串对象、列表对象、 哈希对象、集合对象和有序集合对象这五种类型…

Cesium 获取 3dtileset的包围盒各顶点坐标

Cesium 获取 3dtileset的包围盒各顶点坐标 /*** 获取 3dtileset的包围盒各顶点坐标, z 方向取高度最低的位置* param {*} tileset* param {*} options* returns* ref https://blog.csdn.net/STANDBYF/article/details/135012273* ref https://community.cesium.com/t/accurate-…

基于SpringBoot+Vue的IT博客管理系统

目录 一、绪论1.1 开发背景1.2 系统开发平台1.2.1 Java语言的简介1.2.2 MySQL的简介1.2.3 IntelliJ IDEA的简介 二、需求分析2.1 系统简介2.1.1 系统类型2.1.2 系统用法2.1.3 系统特点 2.2 需求分析2.2.1 系统设计任务2.2.2 系统设计目标2.2.3 系统设计步骤 三、系统设计3.1 用…

视频素材库大全高清素材必备网站,总有一个值得收藏!

喜欢制作短视频的朋友们&#xff0c;你们是否时常苦于寻找合适的视频素材库大全高清素材必备网站&#xff1f;今天&#xff0c;我为大家整理了五个超棒的短视频素材下载网站&#xff0c;希望能够为你们的视频创作提供更多灵感和选择&#xff01; 1.蛙学网&#xff1a; 蛙学网不…

qt可以信号触发信号(信号与槽)信号串联

使用场景&#xff1a;一大堆lineEdit要更新数据上面10几个QLineEdit,z&#xff0c;只要任意改一个数据我都要把所有数据封装成一个包 connect(ui.radar_name_, &QLineEdit::textChanged, ui.antenna_height, &QLineEdit::textChanged); connect(ui.antenna_height, &a…

裸机编程的几种模式、架构与缺陷。

大多数嵌入式的初学者都是从单片机裸机编程开始的&#xff0c;对于初学者来说&#xff0c;裸机编程更加直观、简单&#xff0c;代码所见及所得&#xff0c;调试也非常方便&#xff0c;区别于使用操作系统需要先了解大量的操作系统基础知识&#xff0c;调度的基本常识&#xff0…

【JavaEE Spring 项目】消息队列的设计

消息队列的设计 一、消息队列的背景知识二、需求分析核心概念⼀个⽣产者, ⼀个消费者N 个⽣产者, N 个消费者Broker Server 中的相关概念核⼼ API交换机类型 (Exchange Type)持久化⽹络通信消息应答 三、 模块划分四、 项⽬创建五、创建核心类创建 Exchange创建 MSGQUeue创建 B…

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

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

计算机考研|王道四本书够吗?

如果你是跨考生&#xff0c;王道的四本书只能覆盖你需要的80% 如果你是计算机专业的考生&#xff0c;王道四本书可以覆盖你需要的90% 我已经说的很明显了&#xff0c;王道的内容覆盖不了408考研的全部大纲&#xff0c;有的知识点虽然在王道书上提到了&#xff0c;但是因为不是…

拿捏指针(二)

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

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

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

【网站项目】325企业OA管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

SpringBoot启动后出现Please sign in页面

1. 问题 项目启动后&#xff0c;出现莫名其妙的页面&#xff0c;如下 2. 原因 当您启动 Spring Web 应用程序后出现 “Please sign in” 页面时&#xff0c;这通常是由于引用依赖Spring Security默认的身份验证方式导致的。 <dependency><groupId>org.springfr…

Element 选择季度组件

<template><el-dialogtitle"选择季度":show-close"false":close-on-click-modal"false":close-on-press-escape"false":visible"visiable"class"dialog list"append-to-body><div><div>&…

如何本地搭建hMailServer邮件服务

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

51单片机基础篇系列-定时/计数器的控制工作方式

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制&#xff0c;TMOD用于设置其工作方式&#xff1a; 1.工作方式寄存器TMOD 工作方式寄存器TMO…

C++的类和对象(七):友元、内部类

目录 友元 友元函数 友元类 内部类 匿名对象 拷贝对象时的一些编译器优化 再次理解类和对象 友元 基本概念&#xff1a;友元提供了一种突破封装的方式&#xff0c;有时提供了便利&#xff0c;但是友元会增加耦合度&#xff0c;破坏了封装&#xff0c;所以友元不宜多用&…

AXI CANFD MicroBlaze 测试笔记

文章目录 前言测试用的硬件连接Vivado 配置Vitis MicroBlaze CANFD 代码测试代码测试截图Github Link 前言 官网: CAN with Flexible Data Rate (CAN FD) (xilinx.com) 特征: 支持8Mb/s的CANFD多达 3 个数据位发送器延迟补偿(TDC, transmitter delay compensation)32-deep T…

Jenkins 面试题及答案整理,最新面试题

Jenkins中如何实现持续集成与持续部署&#xff1f; Jenkins通过自动化构建、测试和部署应用程序来实现持续集成与持续部署&#xff08;CI/CD&#xff09;。这个过程包括以下步骤&#xff1a; 1、源代码管理&#xff1a; Jenkins支持与多种版本控制系统集成&#xff0c;如Git、…

数据结构 之 优先级队列(堆) (PriorityQueue)

&#x1f389;欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ &#x1f389;感谢各位读者在百忙之中抽出时间来垂阅我的文章&#xff0c;我会尽我所能向的大家分享我的知识和经验&#x1f4d6; &#x1f389;希望我们在一篇篇的文章中能够共同进步&#xff01;&#xff01;&…