C#从零开始学习笔记---第九天 又是新的一天欢迎大家继续查看我的学习笔记这两天确实状态一般今天内容我们也不记录太多主要分为两大块第一块是对之前提到过的数组进行一个复习第二块就是在记录一下集合和哈希表的一些内容。话不多说我们开始吧顺带提一嘴至于这两天为啥没继续进行类的相关内容是因为主播认为自己还是操之过急了应该先把这些存储结构记录完再开始类这一块这也是最后的铺垫了给大家带来不便还请大家谅解1. 数组数组在之前我们也有提到过也记录了一些内容这里我们就快速复习一下。1.1 数组的定义数组的第一种定义方式就是用类型 [] 数组名new 类型 [数组长度] 然后我们再通过手动赋值即可完成对数组的一个定义。int[]arraynew 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) //用foreachobject 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啊今天的内容到此为止了明天我们在复习一下类明天见