03.集合 - 副本

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三讲集合回顾定义类定义类方法方法重载构造方法定义字段定义属性理解掌握集合ArrayListHashTable理解掌握泛型集合ListTDictionaryK,V本章目标集合的作用/功能管理数据/对象有很多数据/对象,你可以把它们放入一个集合,需要使用时再去取出和数组类似,主要优点是没有数量限制集合主要方法:Add()添加数据/对象[]取出数据/对象Remove()移除数据/对象RemoveAt()移除数据/对象Count数据/对象的数量Clear()清除所有数据/对象foreach遍历集合中所有数据数组的局限string[]Students=newstring[3]{张三,李四,王五};如果每个班级的人数不固定班级中来了一个新的学员班级人员的数组调整大小困难增加元素困难能否动态的维护一个集合?重新定义数组相同类型和名称变量的集合ArrayList是一个可动态维护长度的集合可维护动态长度的集合新增元素可删除元素可访问单个元素objectobjectobjectobject0123索引(下标)object40123ArrayList自动调整索引通过索引访问ArrayList的初始化usingSystem.Collections;…ArrayListStudents=newArrayList();引入命名空间实例化一个对象常见错误未引入命名空间定义时未实例化引入System.Collections命名空间实例化ArrayList对象ArrayList添加元素intAdd(Objectvalue)//添加一个对象到集合的末尾ArrayListstudents=newArrayList();Studentscofield=newStudent(Scofield,Genders.Male,28,越狱狱);…students.Add(scofield);创建学员对象添加学员连续添加三个学员对象并获取集合元素的数目返回索引ArrayList.Count获取元素数目建立班级学员的集合访问ArrayList元素(类型)ArrayList[index]//按指定索引(下标)取得对象Studentstu1=(Student)students[0];stu1.SayHi();…按索引取值转换为学员对象ArrayList第一个对象的索引是0需要类型转换删除ArrayList的元素ArrayList.Remove(对象名)//删除指定对象名的对象ArrayList.RemoveAt(index)//删除指定索引的对象ArrayList.Clear()//清除集合内的所有元素students.RemoveAt(0);students.Remove(zhang);Studentleave=(Student)students[0];leave.SayHi();通过索引删除对象通过指定对象删除只剩一个对象剩余的元素会自动调整索引取得删除后的第一个对象ArrayList的遍历//遍历foreach(Objectstuoinstudents){StudentstuForeach=(Student)stuo;Console.WriteLine(stuForeach.Name);}通过对象遍历打印对象的Name属性Scofield张靓靓周杰杰可以使用和数组类似的方式for(inti=0;istudents.Count;i++){StudentstuFor=(Student)students[i];Console.WriteLine(stuFor.Name);}foreach方式输出结果类型转换常见错误1//…students.Add(scofield);students.Add(zhang);students.Add(jay);students.RemoveAt(0);students.RemoveAt(1);students.RemoveAt(2);运行这段代码会发生错误?索引会自动调整删除两个元素后,不再有索引“2“ArrayList通过索引获取对象为什么使用HashTable能否象索引器那样通过关键字获取该对象呢?动态可维护长度可通过关键字检索C#提供一种集合HashTableStudents[周杰杰].SayHi();Studentstu1=(Student)Students[0];第三章中的索引器通过关键字获取对象什么是HashTableArrayList每个元素对应一个索引HashTable通常称为哈希表根据键(Key)可以查找到相应的值(Value)objectobjectobjectobjectobject0123…ArrayList索引KeyValueKeyValueKeyValueKeyValueKeyValueHashTable值键键和值一一对应使用哈希表students.Add(scofield.Name,scofield);添加元素KeyValue…Studentstu2=(Student)students[周杰杰];stu2.SayHi();…通过key获取元素students.Remove(周杰杰);…通过key删除元素给哈希表添加元素获取哈希表的元素删除哈希表的元素需要类型转换哈希表的遍历foreach(Objectstuoinstudents.Values){Studentstu=(Student)stuo;Console.WriteLine(stu.Name);}如何遍历一个哈希表?KeyValueKeyValueKeyValueKeyValueKeyValueValues不能遍历整个对象,而是遍历Valuesforeach(stringnameinstudents.Keys){Console.WriteLine(name);}可以遍历Keys小结删除一个ArrayList元素有几种方法?HashTable和ArrayList的主要区别是什么?引入命名空间:System.Collections.GenericListStudentstudents=newListStudent();利用ListStudent存储班级集合ListT的使用students.Add(scofield);…students.Add(jacky);将Student对象加入班级将Teacher对象加入班级编译出错foreach(Studentstuinstudents){Console.WriteLine(stu.Name);}不需类型转换遍历ListStudent集合演示示例7:MySchool只能保存Student对象什么是泛型集合泛型最常见的用途是创建集合类泛型集合可以约束集合内的元素类型典型泛型集合ListT,DictionaryK,VT、K,V表示该泛型集合中的元素类型ListStudentStudent对象Teacher对象允许添加不允许添加Student对象无需转换类型使用泛型集合ListTStudentstu1=students[2];stu1.SayHi();Students.RemoveAt(0);//ListStudent方式foreach(Studentstuinstudents){Console.WriteLine(stu.Name);}ListT的访问方式与ArrayList相同使用索引访问,无需类型转换利用索引删除遍历时不需要类型转换ListT与ArrayList通过索引删除元素添加对象方法相同通过索引访问集合的元素相同点需要装箱拆箱无需装箱拆箱可以增加任何类型增加元素时类型严格检查不同点ArrayListListT异同点是否有哈希表那样存储Key和Value形式的泛型集合呢?访问ListT与ArrayList的对比DictionaryK,V概述DictionaryK,V具有ListT相同的特性K,V约束集合中元素类型编译时检查类型约束无需装箱拆箱操作与哈希表类似存储Key和Value的集合Dictionarystring,Studentstudents=newDictionarystring,Student();利用DictionaryK,V存储学员集合Key存储String类型value存储Student类型DictionaryK,V的使用students.Add(scofield.Name,scofield);…studentstu2=students[周杰杰];…students.Remove(周杰杰);添加一对Key/Value通过Key获取元素通过Key删除元素//Dictionarystring,Student方式foreach(Studentstudentinstudents.Values){Console.WriteLine(student.Name);}遍历ValuesDictionaryK,V的访问方式与哈希表相同演示示例8:MySchoolDictionaryK,V与哈希表遍历方法相同添加对象方法相同通过Key获取Value相同点需要装箱拆箱无需装箱拆箱可以增加任何类型增加元素时类型严格检查不同点HashTableDictionaryK,V异同点访问DictionaryK,V与哈希表的对比泛型的重要性泛型集合与传统集合相比类型更安全泛型集合无需做数据类型转换泛型的重要性泛型是未来五年的主流技术之一解决了很多需要繁琐操作的问题提供了更好的类型安全性总结哈希表HashTable如何获取一个元素的Value?ArrayList与哈希表存HashTable取对象需要什么操作?ListT中的T表示什么?泛型集合与传统集合获取元素时的区别?

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功