当前位置: 首页 > news >正文

C#从零开始学习笔记---第九天

又是新的一天,欢迎大家继续查看我的学习笔记,这两天确实状态一般,今天内容我们也不记录太多,主要分为两大块,第一块是对之前提到过的数组进行一个复习,第二块就是在记录一下集合和哈希表的一些内容。话不多说,我们开始吧!顺带提一嘴,至于这两天为啥没继续进行类的相关内容,是因为主播认为自己还是操之过急了,应该先把这些存储结构记录完再开始类这一块,这也是最后的铺垫了,给大家带来不便还请大家谅解!!

1. 数组

数组在之前我们也有提到过,也记录了一些内容,这里我们就快速复习一下。

1.1 数组的定义

数组的第一种定义方式就是用类型 [] 数组名=new 类型 [数组长度] ,然后我们再通过手动赋值即可完成对数组的一个定义。

int[]array=new int [5]; array[0] = 11; array[1] = 22; array[2] = 33; array[3] = 44; array[4] = 55;

当然数组也有其他两种定义方式,我们来看一下,就不再多做解释了。

//另外两种定义方式 int[] array1= new int[] { 11,22,33,44,55}; int[] array2 = { 11, 22, 33, 44, 55 };

1.2数组的打印

数组的打印我们也有两种方式,不过究其根本就还是遍历数组,然后输出数组里的内容。因为这里我们直到数组的长度,所以一般我们可以使用for循环来实现:

//数组的打印 for(int i = 0; i < array.Length; i++) { Console.Write(array[i]+" "); }

我们可以来看一下结果是不是和我们上面定义的数组里的内容一样:

第二种方式呢就是我们通过一个foreach循环,直接遍历数组,然后打印,代码如下:

foreach (int i in array) { Console.Write(i + " "); }

我们也可以看一下这个打印结果,跟上面对比一下,结果肯定是一样的。

1.3 找到数组中的最大值并输出

对于找到数组中的最大值并输出,说白了就还是用遍历数组的思想,我们可以设置一个变量来记录数组里的第一个值,然后通过遍历数组依次让第一个值和后续的值进行比较,谁大就把谁再次赋给这个变量,当我们遍历结束的时候,最大值就脱颖而出了。

//找到数组里的最大值并输出 int[] arr = { 11, 44, 22, 33, 55 }; int max = arr[0]; for (int i = 0; i < arr.Length; i++) { if (arr[i] > max) { max = arr[i]; } } Console.WriteLine($"最大元素为:{max}");

这里结果就不给大家展示了,顺便给大家留一个作业,怎么找到数组中的最小值并输出呢?

1.4 数组的排序:升序,降序

数组的排序在之前也跟大家提过了,这里就复习一下,我们以1.3里创建的数组arr为例,直接看代码。

Array.Sort(arr); //升序 foreach (int i in arr) { Console.Write(i+" "); } Console.WriteLine(); Array.Reverse(arr);//降序 foreach (int i in arr) { Console.Write(i+" "); }

中间加那条cw语句是为了结果大家看起来方便,所以不用在意,我们来看结果:

2.集合

集合其实我们应该也不陌生,但他和数学上的集合可不一样,在c#里的集合更像是一个动态数组,因为他没有固定的长度,一般我们为了应对因为数组长度固定无法改变给我们带来的困扰的时候,就要用到集合这个东西。集合的特征有三个:第一是长度可变,第二是可存放不同类型的元素,第三是存放的元素是有序的。这三个特征我们一定要记住才行。

2.1集合的创建

集合的创建其实和数组差不多,他也有两种创建方式,第一种是不含参数的,以为他的长度是可变的嘛。第二种就是含参数的,也就是说我们可以给这个集合赋一个初始长度,不过这个长度还是可变的。

//集合的创建 ArrayList list = new ArrayList(); //无参 ArrayList list1 = new ArrayList(100);//含参数,代表初始长度,但可变

2.2 在集合里存放元素

在集合里存放元素一般是要调用集合的一些内置的方法,常用的有两种,我们来看看是什么。

2.2.1 add添加

// add添加 list.Add(100); list.Add("别感冒!"); list.Add(3.14159); Console.WriteLine(list[0]); Console.WriteLine(list[1]); Console.WriteLine(list[2]);

我们可以通过上述的方式直接给我们创建的集合进行添加,上面我们添加之后加了一条打印语句,就是来看看我们这个集合里是否成功添加了,来看一下结果:

当然,我们也还可以使用foreach 的方式来对集合进行遍历,具体操作如下:

foreach (var v in list) //用foreach(object obj in list)也可以 { Console.WriteLine(v); }

这个运行结果和上面一样,我这里就不给大家展示了,大家可以自己跑一下看看。

2.2.2 insert插入

因为我们上面说了嘛,集合是一个有序的,就像你去食堂打饭要排队,那这个insert的插入方式就是在已排好的队列里进行插队的操作,我们来看一下:

//insert插入 list.Insert(1, "IKUN"); // 其中参数1表示在第一个位置,参数“IKUN”表示插入的内容 foreach (object obj in list) { Console.WriteLine(obj); }

这里我们还是用的上面定义并赋值过的集合,我们来看看结果:

显然,我们成功在下标为1 的位置插入了字符串IKUN。

2.3集合的删除

集合的删除也有很多种,我们逐一来看。

2.3.1 删除全部元素---clear

//clear 清除集合的全部元素 list.Clear();

2.3.2 删除指定内容元素---remove

//remove 删除指定内容元素 list.Remove(100); //括号里的参数是集合里值为100的内容

2.3.3 删除指定位置的元素---removeat

//removeat 删除指定位置的元素 list.RemoveAt(3); //括号里的参数是集合里第四个位置的内容

2.3.4 批量删除元素---removerange

//removerange批量删除 ArrayList list2 = new ArrayList(); for (int i = 1; i < 11; i++) { list2.Add(i); } list2.RemoveRange(2, 5); //从下位为2的位置开始删除,连着删除5个元素 foreach (object obj in list2) { Console.WriteLine(obj); }

2.4 集合的查找

我们以2.3.4种操作完的数组为例来看一下集合的查找。

//集合的查找 //判断集合中是否包含8这个元素 bool isHave = list2.Contains(8); Console.WriteLine(isHave); //获取集合中某个元素的在集合里的下标 从左向右找 indexof int a = list2.IndexOf(8); //1 2 8 9 10 Console.WriteLine($"第一个8现在位于集合中第{a + 1}个位置"); list2.Add(8); //1 2 8 9 10 8 a = list2.LastIndexOf(8); Console.WriteLine($"最后一个8现在位于集合中第{a + 1}个位置");

因为集合的有序性,所以集合的查找也是有顺序的,第一个就是从左向右找,第二个就是从右向左找,上面的代码里我给大家写了注释,大家可以看看,自己也跑跑看看结果。

3.哈希表

哈希表是一种键值对集合,键值对就是一键一值,相互对应的。其中键是唯一的,不能重复,值的话是可以相同的。同时我们要注意,哈希表是无序存放的。

3.1哈希表的创建

哈希表的创建和集合差不多,也是分为有参数和无参数的,具体操作如下:

//哈希表的创建 Hashtable ht = new Hashtable(); //无参数 Hashtable ht1 = new Hashtable(100); //含参数 ,参数表示哈希表的初始容量

3.2 添加元素

给哈希表添加元素只有一种方式,就是用add。因为他是无序的嘛,你想插队也插不了。

//添加元素 ht.Add(1, "蔡徐坤"); //第一个参数表示键(key),不能重复,第二个参数的表示值(value),可以重复 ht.Add(2, "张凌赫"); //打印 Console.WriteLine(ht[1]); Console.WriteLine(ht[2]);

3.3 删除元素

哈希表删除元素也分两种,具体操作如下:

//删除元素 ht.Clear(); // 删除全部元素 ht.Remove(1);// 删除键为1的元素

3.4哈希表的遍历

哈希表的遍历其实和上面都一样,我们还是使用foreach来进行,具体操作如下:

//遍历访问,用foreach foreach (DictionaryEntry de in ht) //无序的,杂乱无章的 { Console.WriteLine($"{de.Key}&&{de.Value}"); }

3.5 哈希表的查找

哈希表的查找分为两种,第一种是按键查找,第二种是按值查找,但他们的返回值都是bool类型。

//哈希表的查找: 1.按键查找 2.按值查找 ht1.Add(1, "张凌赫"); ht1.Add(2, "蔡徐坤"); ht1.Add(3, "柳智敏"); ht1.Add(4, "吉赛尔"); ht1.Add(5, "金冬天"); ht1.Add(6, "宁艺卓"); bool aa = ht.ContainsKey(2); Console.WriteLine(aa); bool bb = ht.Contains(6); Console.WriteLine(bb); bool cc = ht.ContainsValue("张元英"); Console.WriteLine(cc);

ok啊,今天的内容到此为止了,明天我们在复习一下类,明天见!!!

http://www.jsqmd.com/news/867784/

相关文章:

  • JDK1.7 升级到 JDK1.8 后 HashMap 数据结构变化有哪些影响
  • 从“流量竞价”到“认知主权”:2026年GEO优化重塑品牌数字资产(附头部GEO公司推荐) - 商业科技观察
  • Linux awk 数据分析、字段截取实战
  • Oracle大表更新优化三妙招
  • AI辅助编程:发展现状、效率评估与未来展望
  • 视频硬字幕提取神器:3分钟将任何视频字幕转为可编辑SRT文件
  • 2025-2026年国际十大物流公司排行榜推荐:十大评测海运拼箱降成本市场份额专业注意事项 - 品牌推荐
  • 2026年当前,商业广场如何选择靠谱的扫地车服务商? - 2026年企业推荐榜
  • Linux】2026 年 13 款最强视频播放器(含安装命令 + 优缺点)
  • NLP之BERT预训练模型详解
  • SQL 最常用技能详解与实战示例
  • API调用成本失控?从prompt设计到流式响应,7类高费场景避坑清单,立即止损
  • Java 程序员第 27 阶段:多模型动态路由,灵活切换公有云与本地大模型
  • 腾讯 Marvis 马维斯完整使用教程 2026 最新版
  • 2026年5月更新:武汉元泉世纪健身管理有限公司——武汉瑜伽培训行业的领航者与性价比之选 - 2026年企业推荐榜
  • ElevenLabs江苏话语音适配指南(方言TTS工程化白皮书):覆盖苏州/南京/南通3大方言片,含ASR对齐误差率↓42.7%实测数据
  • 福贡县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 大中小型企业数据层配置规模分析与选型指南
  • ChatGPT FAQ生成不再“假大空”:引入领域知识图谱+用户会话埋点的增强生成框架(已获专利受理号CN2024XXXXXX)
  • hls::stream作为高层次设计中最总要的建模
  • 2026年5月北京办公室装饰装修公司推荐:TOP5排行办公高效评测专业价格注意事项 - 品牌推荐
  • 大中小型企业数据配置年度成本估算分析
  • 如何用3个微小改动让React组件从“能用”升级为“爱用”?——Lovable前端落地实录
  • 在 LangGraph 里做动态路由:意图分类+置信度阈值+回退链路
  • 【央行金融科技白皮书深度解码】:AI Agent在跨境支付、信贷审批、监管报送三大场景的9项强制性技术基线
  • 红河县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • SQL 语句:从产生、发展到内容全景
  • 2026年5月新消息:洛阳地区工业级EDTA采购,为何洛阳崟生化工有限公司是可靠供应商? - 2026年企业推荐榜
  • 河口瑶族自治县黄金回收白银铂金店铺哪家好 门店推荐 - 莘州文化
  • 别再死磕传统SEO!2026年AI搜索流量爆发,头部GEO公司推荐与转型指南 - 商业科技观察