已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,集合和泛型,.NET课程组,2,System.Collections简介2-1,ID,工作档案,ID,工作档案,ID,工作档案,ID,工作档案,职员2,职员4,Employee对象的集合,对象组中元素个数未知,并且随时可能要循环、添加和移除,System.Collection,3,集合概念,如果对象可以提供对相关对象的引用,那么它就是一个集合,它可以遍历集合中的每个数据项;专业的说法是所有实现了System.Collections.IEnumerable接口的类的对象都是集合。,4,集合优点,数组Array是固定大小的,不能伸缩;而集合却是可变长的。数组要声明元素的类型,集合类的元素类型却是object。数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。,5,集合属性,修改或者获取ArrayList的容量使用Capacity属性,通过设置该属性的值可以修改ArrayList的容量;读取该属性的值可以获取ArrayList的容量当为ArrayList对象添加的数据元素的个数超出初始化时指定的数据项个数时,ArrayList对象的容量还可以自动增长默认增长后的容量为原来的2倍,即数据项的个数为初始化时的2倍。,6,常用集合类型1.ArrayList类2.Stack类3.Queue类4.Hashtable类,集合类型,7,集合类型举例-ArrayList的初始化,usingSystem.Collections;ArrayListStudents=newArrayList();ArrayListTeachers=newArrayList(5),可以指定长度,引入命名空间,实例化一个对象,常见错误,未引入命名空间,定义时未实例化,引入System.Collections命名空间实例化ArrayList对象,8,集合类型举例-ArrayList添加元素,intAdd(Objectvalue)/添加一个对象到集合的末尾,ArrayListstudents=newArrayList();Studentscofield=newStudent(Scofield,Genders.Male,28,越狱);students.Add(scofield);,创建学员对象,添加学员,连续添加三个学员对象并获取集合元素的数目,返回索引,ArrayList.Count获取元素数目,建立班级学员的集合,9,集合类型举例-访问ArrayList元素,(类型)ArrayListindex/按指定索引(下标)取得对象,Studentstu1=(Student)students0;stu1.SayHi();,按索引取值,转换为学员对象,ArrayList第一个对象的索引是0,需要类型转换,10,集合类型举例-删除ArrayList的元素,ArrayList.Remove(对象名)/删除指定对象名的对象ArrayList.RemoveAt(index)/删除指定索引的对象ArrayList.Clear()/清除集合内的所有元素,students.RemoveAt(0);students.Remove(zhang);Studentleave=(Student)students0;leave.SayHi();,通过索引删除对象,通过指定对象删除,只剩一个对象,剩余的元素会自动调整索引,取得删除后的第一个对象,11,集合类型举例-ArrayList的遍历,/遍历foreach(Objectstuoinstudents)StudentstuForeach=(Student)stuo;Console.WriteLine(stuForeach.Name);,通过对象遍历,打印对象的Name属性,Scofield张靓靓周杰杰,可以使用和数组类似的方式,for(inti=0;istudents.Count;i+)StudentstuFor=(Student)studentsi;Console.WriteLine(stuFor.Name);,foreach方式,输出结果,类型转换,12,其他集合类型使用,Stack类:栈,后进先出。push方法入栈,pop方法出栈Queue类:队列,先进先出。enqueue方法入队列,dequeue方法出队列。Hashtable类:哈希表,名-值对。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。GetHashCode()方法返回一个int型数据,使用这个键的值生成该int型数据。哈希表获取这个值最后返回一个索引,表示带有给定散列的数据项在字典中存储的位置。,13,泛型,泛型是2.0版C#语言和公共语言运行库(CLR)中的一个新功能。泛型将类型参数的概念引入.NETFramework,不致引入运行时强制转换或装箱操作的成本或风险。(强类型化)使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。泛型最常见的用途是创建集合类。编程时需要引入System.Collection.Generic名称空间,最为常用的有以下两个:ListT类型对象的集合。使用方法与ArrayList类似,但它不仅比ArrayList更安全,而且明显地更加快速。DictionaryV类型的项与K类型的键值相关的集合,可以理解Dictionary是Hashtable的泛型版本。,14,泛型List,创建T类型对象的泛型集合语法为:List泛型对象名=newList();添加泛型List的数据项Add():向列表尾部添加,输入参数为T类型数据AddRange():向列表尾部添加,输入参数为T类型对象组Insert():向指定位置添加,输入数据为位置索引和要添加的对象(T类型),15,泛型举例,publicclassEmployee:IComparablepublicintID;publicstringname;publicstringdepartment;publicEmployee(intiID,stringsName,stringsDepartment)ID=iID;name=sName;department=sDepartment;publicintCompareTo(objectobj)if(objisEmployee)EmployeeanotherEmployee=objasEmployee;returnthis.ID-anotherEmployee.ID;elsereturn0;,输出结果:ID:1,Name:Liu,Department:DataID:2,Name:Li,Department:NetID:3,Name:Yu,Department:NetID:4,Name:Jiang,Department:TrainID:5,Name:Jia,Department:Soft,classProgramstaticvoidMain(stringargs)ListaList=newList();aList.Add(newEmployee(2,Li,Net);aList.Add(newEmployee(3,Yu,Net);aList.Add(newEmployee(1,Liu,Data);aList.Add(newEmployee(5,Jia,Soft);aList.Add(newEmployee(4,Jiang,Train);aList.Sort();/使用CompareTo进行排序/逐个从列表中取出每一个对象foreach(EmployeeiIteminaList)Console.WriteLine(ID:0,Name:1,Department:2,iItem.ID,iI,iItem.department);,16,16,List与ArrayList,访问List与ArrayList的对比,17,Dictionary,Dictionary常用的属性和方法有以下一些,18,泛型练习,(1)添加一个继承自List的类ListEX,假设T类型不提供对象比较的方法,为该类添加方法CountAll(),输入参数为T类型对象,该方法用于计算指定参数出现在ListEX中的次数;假设T类型实现了接口IComparable,提供了Compare()方法,可以对两个T类型的对象进行大小的比较,修改CountAll()方法,先将泛型中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 格兰仕招聘笔试题及答案
- 公务员考试省考市考试题及答案
- 2026年安顺职业技术学院单招职业倾向性考试题库附答案
- 2026年安庆师范大学单招职业技能考试必刷测试卷必考题
- 2025广东梅州市第二轮引进急需紧缺人才参考题库参考答案详解
- 2026年南京科技职业学院单招职业适应性考试必刷测试卷汇编
- 2026年甘肃建筑职业技术学院单招综合素质考试题库带答案
- 2026年陕西国防工业职业技术学院单招职业倾向性考试必刷测试卷及答案1套
- 2026年重庆建筑工程职业学院单招职业倾向性考试题库完美版
- 2026年成都文理学院单招职业倾向性测试题库带答案
- 2025河南省农业信贷担保有限责任公司秋季专场招聘28人考试笔试备考试题及答案解析
- 2026年某气调库建设项目可行性研究报告
- 2025消防宣传月专题培训
- 海龙屯景区的介绍
- 2025年公务员(国考)试题预测试卷附参考答案详解AB卷
- 2025年国家电网招聘之电工类考试题库及答案历年真题
- 关键句子课件
- 2025中国中煤华东分公司所属宝山公司第三批社会招聘63人笔试题库历年考点版附带答案详解
- 小学1-6年级数学公式大全(表格速记)
- 2025中国人民财产保险股份有限公司招聘考试参考题库及答案解析
- 医院课件:《结核菌素(PPD)试验培训》
评论
0/150
提交评论