在C#中,Array,List,ArrayList,Dictionary,Hashtable,SortList,Stack的区别
Array
Array你可以理解为是所有数组的大哥
普通数组 : 特点是长度固定, 只能存储相同类型的数据
static void Main(string[] args){//声明int[] ints;string[] strings;People[] peoples;//默认值 //int 类型是 0//string 类型是 nullint[] ints1 = { 1, 2, 3 };string[] strings1 = { "张三", "李四", "王五" };//数组里面如果存 值类型 存储就是值本身//数组里面如果存 引用类型 存储的就是内存地址//数组遍历for (int i = 0; i < ints1.Length; i++){Console.WriteLine(ints1[i]);}foreach (var s in strings1){Console.WriteLine(s);}int[] ages = { 18, 19, 2, 30, 60, 15, 14 };//Array类上的方法//1.Clear() 将数组恢复成默认值 参1:索引 参2:长度Array.Clear(ints1,1,1);//2.Copy() 复制//Array.Copy(ints1, strings1, ints1.Length);//3.Reverse() 反转Array.Reverse(ints1);//4.IndexOf() 从前往后查询参数2在参数1中首次出现的位置,有则返回索引 没有返回-1//参1:数组 参2:该数在参1出现的位置 参3:指定开始查询位置 参4:查询的个数Array.IndexOf(ages,30);//5.LastIndexOF() 从后向前查找参2数据,出现在参1数组中,有则返回索引,没有返回-1Array.LastIndexOf(ages,30);//6.Find() 从前往后查询参数2在参数1中首次出现的位置 ,有则返回值 没有返回数据默认值Array.Find(ages, x => x > 18);//7.FindLast() 从后往前查询参数2条件的值 有则返回查到的值 没有返回数据类型默认值Array.FindLast(ages, x => x <18);//8.FindIndex() 从前往后查询参数2条件的值 有则返回查到的值的索引 没有返回-1Array.FindIndex(ages, x => x ==18);//9.FindLastIndex() 从后向前查询参数2条件的值 返回的是一个数组Array.FindLastIndex(ages, x => x ==18);//10.FindAll() 查找数组中所有符合参数2条件的值 返回的是一个数组Array.FindAll(ages, x => x % 2 == 0);//11.TrueForAll() 判断数组中的数据是否全部满足参数2,如果满足返回true 只要有一个不满足 则返回falseArray.TrueForAll(ages, x => x>0);//12.Exists() 判断数组中是否有一项满足参数2的条件,只要有一项满足条件 则返回true 所有不满足则返回falseArray.Exists(ages,x=>x%2==0);//实例上的方法://1.CopyTo()//2.GetLength() 获取指定维度长度//3.SetValue() 设置值//4.GetValue() 获取值}
}
class People
{public string Name { get; set; }
}
List
//List: 集合 只能存储相同类型的数据,List的长度是不固定的
//格式: List<数据类型> 变量名 = new List<数据类型>();List<string>list=new List<string>() { "1","2","3"};
List<int> list2=new List<int>(){1,2,3};
list[0] = "1111";
Console.WriteLine(list[0]);
Console.WriteLine(list.Count);list.Sort();
list.Reverse();
list.Clear();
list.IndexOf("1");
list.Insert(0,"2");
ArrayList
#region ArrayList//ArrayList 是一个动态数组 不固定长度和类型ArrayList list1 = new ArrayList();ArrayList array=new ArrayList() { "你好",1,2,true,new int[] {1,2,3} };//获取动态数组的长度Console.WriteLine(array.Count);array[0] = 100;Console.WriteLine(array[0]);//1.Add 向ArrayList 的最后位置添加数据list1.Add(100);//2.AddRange()int[] ints2 = {1,2,3,4,5,6};list1.AddRange(ints2);ArrayList array2 = new ArrayList() {"Hello Word!" };list1.AddRange(array2);//3.Insert() 在指定索引位置插入数组list1.Insert(1,"小丑");//4.InsertRange() 在指定的索引位置 插入集合的内容list1.InsertRange(2,ints2);//5.Clear()list1.Clear();//6.GetRange() 从集合中截取对应的数据 返回一个新的ArrayList//参1:开始索引的位置//参2:截取的个数ArrayList arr = list1.GetRange(1, 3);//7.Remove() 删除动态数组中指定的第一个值array.Remove(true);//8.RemoveAt() 删除数组中指定索引位置的数据array.RemoveAt(0);//9.RemoveRange() 删除指定范围数据 从索引1的位置开始删除 删除两个array.RemoveRange(1, 2);//10.SetRange() 将参数2集合中的数据 复制到当前动态数组中//参数1:指定从动态数组中 第几个索引开始array.SetRange(0, array2);#endregion
Dictionary
#region Dictionary//Dictionary(字典) 使用"键"来操作//固定数据类型 长度不固定//键: 标识 在一个字典中 键是唯一的 并且不能为null//格式: Dictionary<键的数据类型,值的数据类型>变量名=newDictionary<string,int> dic = new Dictionary<string,int>(){{"1",666 },{"2",222 },{"3",444 },{"4",555 }};//向字典中添加数据 参数1:键 参数2:值dic.Add("你好", 666);//取值Console.WriteLine(dic["1"]);//修改dic["2"] = 333;//键值对的个数Console.WriteLine(dic.Count);//判断字典中是否包含指定的key(键)和Value(值)Console.WriteLine(dic.ContainsKey("4"));Console.WriteLine(dic.ContainsValue(666));#endregion
Hashtable
#region Hashtable//Hashtable 哈希表 表示一系列由键和值组成的数据 使用键访问Hashtable hashtable = new Hashtable(){{1,"1" },{2,"2"},{1,1 },{"2",2 },{true,false},};hashtable.Add("8", "6666");Console.WriteLine(hashtable[1]);hashtable["2"] = "你好";//Keys 获取哈希表中所有的键Console.WriteLine(hashtable.Keys);//Values 获取哈希表中所有的值Console.WriteLine(hashtable.Values);//是否拥有固定大小Console.WriteLine(hashtable.IsFixedSize);//是否只读Console.WriteLine(hashtable.IsReadOnly);#endregion
SortList
#region SortList 排序列表SortedList sortedList = new SortedList(){{10,"这是10" },{1,"这是1"},{ 2,"这是2"}};sortedList.Add(9, "这是9");//GetByIndex() 通过索引进行访问 排序列表会自动根据键进行排序,索引为0的时候,获取的键值对是 键最小的那个键对值Console.WriteLine(sortedList.GetByIndex(0));sortedList[2] = "这个变20了";Console.WriteLine(sortedList.GetByIndex(1));//GetKey() 通过索引进行访问 获取键值对的 键Console.WriteLine(sortedList.GetKey(2));foreach (int key in sortedList.Keys){Console.WriteLine(key+"\t");}foreach (string key in sortedList.Values){Console.WriteLine(key+"\t");}Console.WriteLine(sortedList.Count);#endregion
Stack
#region Stack 堆栈Stack<string> stack = new Stack<string>();//添加元素 推入元素stack.Push("张三");stack.Push("李四");stack.Push("王五");Console.WriteLine(stack.Count);//移除并返回在堆栈顶部的对象Console.WriteLine(stack.Pop());//返回在堆栈顶部的对象,但不移除它Console.WriteLine(stack.Peek());Queue<string> queue = new Queue<string>();queue.Enqueue("张三");queue.Enqueue("李四");queue.Enqueue("王五");queue.Dequeue();Console.WriteLine(queue.Peek());#endregion
相关文章:
在C#中,Array,List,ArrayList,Dictionary,Hashtable,SortList,Stack的区别
Array Array你可以理解为是所有数组的大哥 普通数组 : 特点是长度固定, 只能存储相同类型的数据 static void Main(string[] args){//声明int[] ints;string[] strings;People[] peoples;//默认值 //int 类型是 0//string 类型是 nullint[] ints1 { 1, 2, 3 };string[] …...
微服务知识——微服务架构的演进过程
文章目录 初始架构:单机架构第一次演进:Tomcat与数据库分开部署第二次演进:引入本地缓存和分布式缓存第三次演进:引入反向代理实现负载均衡第四次演进:数据库读写分离第五次演进:数据库按业务分库第六次演进…...
Chrome 浏览器:互联网时代的浏览利器
Chrome 浏览器:互联网时代的浏览利器 引言 在互联网时代,浏览器已经成为我们日常生活中不可或缺的工具。作为全球最受欢迎的浏览器之一,Chrome 浏览器凭借其出色的性能、丰富的扩展程序和简洁的界面,赢得了广大用户的喜爱。本文…...
深入浅出 NRM:加速你的 npm 包管理之旅
文章目录 前言一、NRM 是什么?二、为什么需要 NRM?三、NRM 的优势四、NRM 的安装与使用4.1 安装 NRM4.2 查看可用的 npm 源4.3 切换 npm 源4.4 测试 npm 源速度4.5 添加自定义 npm 源4.6 删除 npm 源 五、NRM 的进阶使用六、总结 前言 作为一名 JavaScr…...
Linux——基础命令1
$:普通用户 #:超级用户 cd 切换目录 cd 目录 (进入目录) cd ../ (返回上一级目录) cd ~ (切换到当前用户的家目录) cd - (返回上次目录) pwd 输出当前目录…...
nuxt3中使用useFetch请求刷新不返回数据或返回html结构问题解决-完整nuxt3useFetchtch请求封装
前言 如果使用nuxt3写项目,可以查看nuxt3实战:完整的 nuxt3 vue3 项目创建与useFetch请求封装,此篇内容有详细步骤 但在此篇内容中useFetch请求在页面有多个请求的情况下,或者放在客户端渲染情境下是失败的,所以在此篇…...
Kubernetes 中 BGP 与二层网络的较量:究竟孰轻孰重?
如果你曾搭建过Kubernetes集群,就会知道网络配置是一个很容易让人深陷其中的领域。在负载均衡器、服务通告和IP管理之间,你要同时应对许多变动的因素。对于许多配置而言,使用二层(L2)网络就完全能满足需求。但边界网关协议(BGP)—— 支撑互联网运行的技术 —— 也逐渐出…...
C中静态库和动态库的使用
2.使用尖括号包括 如果要使用尖括号包括头文件,有两种方法 1.将头文件移动到标准头文件目录,linux为/usr/local/include.windows下为C:\MinGW\include 2.编译时指定头文件目录,gcc -I/头文件目录 … 编译时-I参数就是用于指定头文件目录 3.静态库 将文件编译为静态库,可以…...
Debian 安装 Nextcloud 使用 MariaDB 数据库 + Caddy + PHP-FPM
前言 之前通过 docker在ubuntu上安装Nextcloud,但是现在我使用PVE安装Debian虚拟机,不想通过docker安装了。下面开始折腾。 安装过程 步骤 1:更新系统并安装必要的软件 sudo apt update && sudo apt upgrade -y sudo apt install…...
【FPGA】 MIPS 12条整数指令 【3】
实现乘除 修改框架 EX:实现带符号乘除法和无符号乘除法 HiLo寄存器:用于存放乘法和除法的运算结果。Hi、Lo为32bit寄存器。电路描述与实现RegFile思想一致 仿真 代码 DataMem.v include "define.v"; module DataMem(input wire clk,input…...
Mac 部署Ollama + OpenWebUI完全指南
文章目录 💻 环境说明🛠️ Ollama安装配置1. 安装[Ollama](https://github.com/ollama/ollama)2. 启动Ollama3. 模型存储位置4. 配置 Ollama 🌐 OpenWebUI部署1. 安装Docker2. 部署[OpenWebUI](https://www.openwebui.com/)(可视化…...
蓝桥杯小白打卡第二天
789. 数的范围 题目描述 给定一个按照升序排列的长度为 n n n 的整数数组,以及 q q q 个查询。 对于每个查询,返回一个元素 k k k 的起始位置和终止位置(位置从 0 0 0 开始计数)。 如果数组中不存在该元素,则返…...
Docker Compose:容器编排的利器
Docker Compose:容器编排的利器 引言 随着容器技术的普及,Docker成为了当今最受欢迎的容器编排工具之一。Docker Compose作为Docker生态系统中的一部分,允许用户以声明式的方式定义和运行多容器Docker应用。本文将深入探讨Docker Compose的基本概念、工作原理、使用场景以…...
springboot项目的单元测试
文章目录 依赖编写单测代码一些注意点 依赖 依赖包含了 JUnit、Mockito、Spring Test 等常用的测试工具 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><…...
JVM图文入门
往期推荐 【已解决】redisCache注解失效,没写cacheConfig_com.howbuy.cachemanagement.client.redisclient#incr-CSDN博客 【已解决】OSS配置问题_keyuewenhua.oss-cn-beijing.aliyuncs-CSDN博客 【排坑】云服务器docker部署前后端分离项目域名解析OSS-CSDN博客 微服…...
cursor 开发java项目教程简单上手
1.官网下载 Cursor - The AI Code Editor 下载完后注册账号,可以使用无限邮的方式 注册完之后 设置中文 可以选择设置为中文 Ctrl Shift X 进入设置页面输入chinese 然后重启 更改jdk跟maven仓库设置 ctrlshiftp 打开输入框后输入json,把下面代码…...
优化fm.jiecao.jcvideoplayer_lib中视频横竖屏自动适配原视频方案
fm.jiecao:jiecaovideoplayer:x.x.x 优化fm.jiecao.jcvideoplayer_lib中视频横竖屏自动适配原视频方案: 仅优化关键代码部分,源码: public void startWindowFullscreen() {Log.i(TAG, "startWindowFullscreen " " [" …...
aws(学习笔记第二十七课) 使用aws API Gateway+lambda体验REST API
aws(学习笔记第二十七课) 使用aws API Gatewaylambda体验REST API 学习内容: 使用aws API Gatewaylambda 1. 使用aws API Gatewaylambda 作成概要 使用api gateway定义REST API,之后再接收到了http request之后,redirect到lambda进行执行。…...
物联网的三层架构:感知层、网络层与应用层
物联网(Internet of Things, IoT)作为现代科技的重要组成部分,正在深刻改变我们的生活和工作方式。它将物理世界与数字世界无缝连接,通过智能设备、传感器和网络技术,实现数据的采集、传输和应用。物联网的架构通常分为…...
常用抓包工具tcpdump、Fiddler、Charles、Wireshark 和 Sniffmaster 下载地址
抓包大师官网下载地址 Sniff Master Download - Free TCP and HTTPS Proxy Sniffing Tool, Supports IOS Sniffing Fiddler classic官网下载地址 Download Fiddler Web Debugging Tool for Free by Telerik Fiddler Everywhere官网下载地址 The Ultimate Web Debugging Tool …...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
