如何使用泛型与泛型集合
泛型 集合
如何使用集合和泛型集合
泛型 集合
数组的局限string[] Students = new string[3] {"张三 "李四 "王五 张三", 李四", 王五"}; 张三 李四 王五 班级人员的数组 相同类型和名称 变量的集合
如果每个班级的人数不固定 重新定义数组 班级中来了一个新的学员
调整大小困难
增加元素困难
能否动态的维护一个集合? 能否动态的维护一个集合?
泛型 集合
可维护动态长度的集合ArrayList是一个可动态维护长度的集合 是一个可动态维护长度的集合自动调整 索引 新增元素 ArrayList
0 1 0 2 1 3 2 4 3通过索引 访问 索引(下标 索引 下标) 下标
object object object object object
可删除元素
可访问单个元素
泛型 集合
ArrayList的初始化 的初始化引入System.Collections命名空间 命名空间 引入 实例化ArrayList对象 实例化 对象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, "越狱狱 越狱狱"); 越狱狱 //… 创建学员对象 添加学员 students.Add(scofield); 连续添加三个学员对象 并获取集合元素的数目 ArrayList.Count获 获 取元素数目
演示示例1 演示示例1:MySchool
泛型 集合
访问ArrayList元素 元素 访问(类型 ArrayList[index] //按指定索引(下标)取得对象 类型) 按指定索引( 类型 按指定索引 下标) 需要类型转换 Student stu1 = (Student)students[0]; stu1.SayHi(); … 转换为学员对象 按索引取值
ArrayList第一个对 第一个对 象的索引是0 象的索引是
泛型 集合
删除ArrayList的元素 的元素 删除ArrayList.Remove(对象名 //删除指定对象名的对象 对象名) 删除指定对象名的对象 对象名 ArrayList.RemoveAt(index) //删除指定索引的对象 删除指定索引的对象 ArrayList.Clear() //清除集合内的所有元素 清除集合内的所有元素
students.RemoveAt(0); students.Remove(zhang);
通过索引删除对象 通过指定对象删除 取得删除后的第一个对象
Student leave = (Student)students[0]; leave.SayHi(); 只剩一个对象 剩余的元素会自动调整索引
泛型 集合
ArrayList 的遍历可以使用和数组类似的方式for (int i = 0; i < students.Count; i++) { Student stuFor = (Student)students[i]; Console.WriteLine(http://www.77cn.com.cn); } 输出结果
Scofield 张靓靓 周杰杰
foreach 方式通过对象遍历 //遍历 遍历 foreach (Object stuo in students) { 类型转换 Student stuForeach = (Student)stuo; Console.WriteLine(http://www.77cn.com.cn); 打印对象的Name属性 打印对象的 属性 }
演示示例2 演示示例2
:MySchool
泛型 集合
为什么使用HashTable 为什么使用ArrayList通过索引获取对象 通过索引获取对象Student stu1 = (Student)Students[0];
通过关键字获取对象Students["周杰杰 周杰杰"].SayHi(); 周杰杰
能否像索引器那样通过关键字获取该对象呢? 能否像索引器那样通过关键字获取该对象呢?动态可维护长度 C#提供一种集合 提供一种集合 可通过关键字检索 HashTable
泛型 集合
什么是HashTable 什么是ArrayList 每个元素对应一个索引 HashTable 通常称为哈希表 根据键( 根据键(Key)可以查找到相应的值(Value) )可以查找到相应的值( )ArrayListobject object object object object
HashTable键 Key Key 索引 键和值一一对应 Key Key Key Value Value Value Value Value 值
0 1 2 3 …
泛型 集合
使用哈希表给哈希表添加元素students.Add(http://www.77cn.com.cn , scofield); Key Value 添加元素
获取哈希表的元素… Student stu2 = (Student)students["周杰杰 周杰杰"]; 周杰杰 stu2.SayHi(); 通过key获取元素 通过 获取元素 需要类型转换 …
删除哈希表的元素students.Remove("周杰杰 周杰杰"); 周杰杰 … 通过key删除元素 删除元素 通过
演示示例5 演示示例5:MySchool
泛型 集合
哈希表的遍历如何遍历一个哈希表? 如何遍历一个哈希表? 哈希表不能遍历整个对象, 不能遍历整个对象,而 是遍历Values 是遍历
foreach (Object stuo in students.Values) { Student stu = (Student)stuo; Console.WriteLine(http://www.77cn.com.cn); } foreach (string name in students.Keys) { Console.WriteLine(name); } 可以遍历Keys 可以遍历
Key Key Key Key Key
Value Value Value Value Value
Values
泛型 集合
类型安全1 类型安全MySchool中添加一个 中添加一个Teacher类 中添加一个 类Teacher jacky = new Teacher(“周星驰 4); 周星驰", 周星驰 jacky.SayHi(); students.Add(jacky); 能否加入一个 Teacher对象? 对象? 对象 foreach (Object stuo in students) { Student stu = (Student)stuo; Console.WriteLine(http://www.77cn.com.cn); } 遍历这个集合是否 有问题? 有问题?
泛型 集合
类型安全2 类型安全对象存储不 易控制 Student集合 集合 Teacher对象 对象 成龙龙 Scofield 张靓靓 周杰杰 添加对象 类型转换 容易出错 遍历集合
运行错误
泛型 集合
List<T>的使用 的使用引入命名空间: 引入命名空间:System.Collections.Generic List<Student> students = new List<Student>(); 利用List<Student>存储班级集合 利用 存储班级集合students.Add(scofield); … students.Add(jacky); 编译出错 将Student对象加入班级 对象加入班级 将Teacher对象加入班级 对象加入班级
遍历List<Student>集合 集合
只能保存Student对象 对象 只能保存 不需类型转换
foreach (Student stu in students) { Console.WriteLine(http://www.77cn.com.cn); }
泛型 集合
什么是泛型集合Student对象 对象 Teacher对象 对象
允许添加
List<Student>
不允许添加 无需转换类型
Student对象 对象
泛
型最常见的用途是创建集合类 泛型集合可以约束集合内的元素类型 典型泛型集合List<T>,Dictionary<K,V> 典型泛型集合 ,<T>、<K,V>表示该泛型集合中的元素类型 、 表示该泛型集合中的元素类型
…… 此处隐藏:2146字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [幼儿教育]【完整版】2019-2025年中国药物发现外
- [幼儿教育]2018-2019年初中信息技术广东初一竞赛
- [幼儿教育]最新外研版(一起)小学英语五年级上册《
- [幼儿教育]农业推广与创新管理专业 -中农大毕业论
- [幼儿教育]2017-2022年中国更年期用药行业市场深
- [幼儿教育]数学1.1.2第1课时棱柱、棱锥和棱台的结
- [幼儿教育]二年级群文阅读课例欣赏
- [幼儿教育]2010-2015年中国保险行业投资分析及深
- [幼儿教育]厄运打不垮的信念第一课时
- [幼儿教育]巧用文本,让表达在言语中绽放论文
- [幼儿教育]中学生百科知识竞赛题及答案
- [幼儿教育]八大菜系英文简介
- [幼儿教育]中国男装牛仔裤市场发展研究及投资前景
- [幼儿教育]远程数字视频监控系统在银行的应用
- [幼儿教育]光纤光缆制造工艺及设备
- [幼儿教育]国家安全法试题及答案
- [幼儿教育]2011高中提前招生及竞赛试题(物理卷1)
- [幼儿教育]宁夏第三产业房地产业、科学研究和技术
- [幼儿教育]中兴通讯 ME3000模块用户硬件设计手册_
- [幼儿教育]紫外线灯管的辐照强度问题
- 苏联东欧剧变的原因和历史教训浅析
- 人工智能导论实验报告(学生)
- 思科ITE章考试原题及答案
- 《学习雷锋好榜样》主题班会教案
- 加油站建设项目安全评价报告
- 剖析社保卡管理系统
- 2017-2018年影视剧新媒体版权运营行业
- 2017-2018学年四川省成都市高一上学期
- 2019最新高中数学 第三章 3.2.1 几类不
- 2011-2015年中国基酸市场调查及行业前
- 人教版新课标选修八Unit 1 课件Warming
- 郭溪燎原小学辅导学生记录表
- 教师资格证统考综合素质写作秘笈
- 国外校园绿色建筑研究方向与建设实践
- 15.1 动物运动的方式 课件(北师大版八
- 民用飞机空调系统
- 长安侠文化传统与唐诗的任侠主题
- 《中国近现代史纲要》名词解释
- 11金本《保险学概论》复习资料
- 民用建筑机电安装工程专业施工图图纸会




