版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、泛型与泛型集合第五章回顾 static void Main(string args) int array = new int 0, 1, 2, 3, 4 ; for (int i = 0; i array.Length; i+) Console.WriteLine(arrayi); 请说出下面代码的结果预习检查定义泛型集合时的特殊语法符号?泛型集合对比ArrayList和HashTable的主要区别是什么?本章任务理解“新闻快客”的主要功能使用集合实现班级的学员列表理解和使用泛型List实现班级的学员列表List实现频道列表Dictionary实现文章列表本章目标理解集合的概念熟练使用集合访问
2、数据理解泛型概念熟练使用各种泛型集合数组的局限能否动态的维护一个集合?string Students = new string3 张三, 李四, 王五;如果每个班级的人数不固定 班级中来了一个新的学员 班级人员的数组 调整大小困难增加元素困难重新定义数组 相同类型和名称变量的集合可维护动态长度的集合ArrayList是一个可动态维护长度的集合新增元素 可删除元素 可访问单个元素 objectobjectobjectobject0123索引(下标)object40123ArrayList自动调整索引通过索引访问ArrayList的初始化引入System.Collections命名空间实例化Arr
3、ayList对象using System.Collections;ArrayList Students = new ArrayList();ArrayList Teachers = new ArrayList(5)可以指定长度引入命名空间实例化一个对象常见错误未引入命名空间定义时未实例化ArrayList添加元素建立班级学员的集合int Add(Object value) /添加一个对象到集合的末尾ArrayList students = new ArrayList();Student scofield = new Student(Scofield, Genders.Male, 28, 越狱狱
4、);students.Add(scofield);创建学员对象添加学员连续添加三个学员对象并获取集合元素的数目返回索引ArrayList.Count获取元素数目演示示例1:MySchool 访问ArrayList元素(类型) ArrayListindex /按指定索引(下标)取得对象Student stu1 = (Student)students0;stu1.SayHi();按索引取值转换为学员对象ArrayList第一个对象的索引是0需要类型转换删除ArrayList的元素ArrayList.Remove(对象名) /删除指定对象名的对象ArrayList.RemoveAt(index) /
5、删除指定索引的对象ArrayList.Clear() /清除集合内的所有元素students.RemoveAt(0);students.Remove(zhang);Student leave = (Student)students0;leave.SayHi();通过索引删除对象通过指定对象删除只剩一个对象剩余的元素会自动调整索引取得删除后的第一个对象ArrayList 的遍历可以使用和数组类似的方式/遍历foreach (Object stuo in students) Student stuForeach = (Student)stuo; Console.WriteLine(stuForea
6、ch.Name);通过对象遍历打印对象的Name属性Scofield张靓靓周杰杰for (int i = 0; i students.Count; i+) Student stuFor = (Student)studentsi; Console.WriteLine(stuFor.Name);foreach 方式输出结果类型转换演示示例2:MySchool 常见错误1/students.Add(scofield);students.Add(zhang);students.Add(jay);students.RemoveAt(0);students.RemoveAt(1);students.Rem
7、oveAt(2);运行这段代码会发生错误?索引会自动调整删除两个元素后,不再有索引“2“public struct Student public Student(string name, int age) Name = name; Age = age; public string Name; public int Age;Student stu1 = new Student(张三,20);Student stu2 = new Student(李四, 20);Student stu3 = new Student(王五, 20); ArrayList students = new ArrayLis
8、t();students.Add(stu1);students.Add(stu2);students.Add(stu3);常见错误2static void Main(string args) /初始化代码将对象加入ArrayList集合 foreach (Student stu in students) Student myStudent = (Student)stu; myStudent.Age = 60; foreach (Student stu in students) Console.WriteLine(stu.Age); 遍历显示年龄结果是多少?结构是值类型定义一个学员结构使用Arr
9、ayList存储学员遍历修改年龄演示示例3:MyError 为什么使用HashTableArrayList通过索引获取对象能否象索引器那样通过关键字获取该对象呢?动态可维护长度可通过关键字检索C#提供一种集合HashTable Students周杰杰.SayHi();Student stu1 = (Student)Students0; 第三章中的索引器通过关键字获取对象什么是HashTableArrayList 每个元素对应一个索引HashTable 通常称为哈希表根据键(Key)可以查找到相应的值 (Value)objectobjectobjectobjectobject0123ArrayL
10、ist索引KeyValueKeyValueKeyValueKeyValueKeyValueHashTable值键键和值一一对应使用哈希表给哈希表添加元素students.Add(scofield.Name , scofield);添加元素KeyValueStudent stu2 = (Student)students周杰杰;stu2.SayHi();通过key获取元素students.Remove(周杰杰);通过key删除元素获取哈希表的元素删除哈希表的元素需要类型转换演示示例4:MySchool 哈希表的遍历foreach (Object stuo in students.Values) S
11、tudent stu = (Student)stuo; Console.WriteLine(stu.Name);如何遍历一个哈希表?KeyValueKeyValueKeyValueKeyValueKeyValueValues不能遍历整个对象,而是遍历Valuesforeach (string name in students.Keys) Console.WriteLine(name);可以遍历Keys小结删除一个ArrayList元素有几种方法?HashTable和ArrayList的主要区别是什么?类型安全1MySchool中添加一个Teacher类Teacher jacky = new T
12、eacher(成龙龙, 4);jacky.SayHi(); students.Add(jacky);能否加入一个Teacher对象?foreach (Object stuo in students) Student stu = (Student)stuo; Console.WriteLine(stu.Name);遍历这个集合是否有问题?演示示例5:MySchool 类型安全2Student集合Scofield张靓靓周杰杰成龙龙添加对象遍历集合对象存储不易控制类型转换容易出错Teacher对象运行错误List的使用引入命名空间:System.Collections.GenericList stu
13、dents = new List();利用List存储班级集合students.Add(scofield);students.Add(jacky);将Student对象加入班级将Teacher对象加入班级编译出错foreach (Student stu in students) Console.WriteLine(stu.Name);不需类型转换 遍历List集合演示示例6:MySchool 只能保存Student对象什么是泛型集合泛型最常见的用途是创建集合类泛型集合可以约束集合内的元素类型 典型泛型集合List,Dictionary、表示该泛型集合中的元素类型ListStudent对象Tea
14、cher对象允许添加不允许添加Student对象无需转换类型 使用泛型集合ListStudent stu1 = students2;stu1.SayHi();Students.RemoveAt(0);/List 方式foreach (Student stu in students) Console.WriteLine(stu.Name);List的访问方式与ArrayList相同使用索引访问,无需类型转换利用索引删除遍历时不需要类型转换 List 与 ArrayList访问 List 与 ArrayList 的对比通过索引删除元素添加对象方法相同通过索引访问集合的元素相同点需要装箱拆箱无需装箱
15、拆箱可以增加任何类型增加元素时类型严格检查不同点ArrayListList异同点是否有哈希表那样存储Key和Value形式的泛型集合呢? Dictionary概述Dictionary具有List相同的特性约束集合中元素类型编译时检查类型约束无需装箱拆箱操作与哈希表类似存储Key和Value的集合Dictionary students = new Dictionary();利用Dictionary存储学员集合Key存储String类型value存储Student类型Dictionary的使用students.Add(scofield.Name, scofield);student stu2 =
16、students周杰杰;students.Remove(周杰杰);添加一对Key/Value通过Key获取元素通过Key删除元素 /Dictionary 方式foreach (Student student in students.Values) Console.WriteLine(student.Name);遍历ValuesDictionary的访问方式与哈希表相同演示示例7:MySchool Dictionary与哈希表访问 Dictionary 与 哈希表 的对比遍历方法相同添加对象方法相同通过Key获取Value相同点需要装箱拆箱无需装箱拆箱可以增加任何类型增加元素时类型严格检查不同点哈希表Dictionary异同点综合实战完善新闻快客修改RssFeed类添加一个Profile类,存储配置信息Dictionary保存文章集合List保存频道集合综合实战主窗体添加初始化频道列表方法添加频道和文章RssFeed sportsFeed = new RssFeed(体育新闻, );sportsFeed.Articles.Add( 中马战前瞻:国足强阵稳中求胜 战弱旅三分最重要, new Article( 中马战前瞻:国足强阵稳中求胜 战弱旅三分最重要, /n/2007-07-09/20453028553.shtml);pro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全专题宣传稿讲解
- 2026年环境质量标准与监测方法
- 2026秋招:中国有研科技真题及答案
- 2026秋招:中国冶金地质总局试题及答案
- 2026秋招:中国建筑真题及答案
- 2026秋招:中国核工业题库及答案
- 跨境电商陆运外包合同2025
- 2026秋招:智能制造技术岗面试题及答案
- 医院护理服务政策与法规
- 护理带教师资培训:信息技术与护理教育融合
- 大学英语语法重点总结
- 2026年大学物理力学知识点精讲与习题试卷及答案
- 守正创新担使命凝心聚力启新程-校长在2026年春季学期全体教师开学大会上的讲话
- 教师招聘考试公共基础知识试题及答案
- 药房绿色通道制度规范
- 【语文】湖南省长沙市天心区赤岭路学校小学一年级上册期末试卷(含答案)
- 涉融资性贸易案件审判白皮书(2020-2024)-上海二中院
- 2026年枣庄科技职业学院单招职业适应性测试必刷测试卷含答案
- 2025年北京市2025年中考历史真题试卷(含答案解析)
- 艺术专业就业前景
- 2023年鲁迅美术学院附属中学(鲁美附中)中考招生语文数学英语试卷
评论
0/150
提交评论