c ArrayList使用集合组织相关数据PPT教学课件_第1页
c ArrayList使用集合组织相关数据PPT教学课件_第2页
c ArrayList使用集合组织相关数据PPT教学课件_第3页
c ArrayList使用集合组织相关数据PPT教学课件_第4页
c ArrayList使用集合组织相关数据PPT教学课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、预习检查 ArrayList中如何添加数据? 定义泛型集合时的特殊语法符号?第第2页页/共共39页页第1页/共39页本章任务 实现员工信息管理 实现员工考勤管理第第3页页/共共39页页第2页/共39页 理解集合的概念 熟练使用集合访问数据 理解泛型的概念 熟练使用各种泛型集合本章目标第第4页页/共共39页页第3页/共39页数组的局限性SE engineers = new SE3;engineers0 = new SE();engineers1 = new SE();如果每个部门的人数不固定 部门中来了一个新同事 调整大小困难增加元素困难 能否动态的维护一个集合?重新定义数组 3个工程师对象组成

2、的集合 数组长度定义很大 第第5页页/共共39页页第4页/共39页 ArrayList是一个可动态维护长度的集合可维护动态长度的集合新增元素 可删除元素 可访问单个元素 objectobjectobjectobject0123索引(下标)object40123ArrayList自动调整索引通过索引访问第第6页页/共共39页页第5页/共39页ArrayList的初始化using System.Collections;ArrayList engineers = new ArrayList();ArrayList engineers = new ArrayList(5)可以指定长度引入命名空间实例化

3、一个对象常见错误未引入命名空间定义时未实例化 引入System.Collections命名空间 实例化ArrayList对象第第7页页/共共39页页第6页/共39页ArrayList添加元素int Add(Object value) /添加一个对象到集合的末尾ArrayList engineers = new ArrayList();SE jack = new SE();jack.Name = 王小毛;engineers.Add(jack); 创建工程师对象 添加对象到集合 连续添加三个工程师对象并获取集合元素的数目返回索引engineers.Count获取元素数目 建立部门工程师集合演示示例

4、:向集合添加元素演示示例:向集合添加元素第第8页页/共共39页页第7页/共39页访问ArrayList元素(类型) ArrayList index /按指定索引(下标)取得对象SE engineer = (SE) engineers0;MessageBox.Show(engineer.SayHi(); 按索引取值转换为工程师对象需要类型转换 获取集合元素,并执行问好演示示例:访问集合元素演示示例:访问集合元素第第9页页/共共39页页第8页/共39页ArrayList 的遍历foreach (Object obj in engineers) SE seForeach = (SE)obj; Con

5、sole.WriteLine(seForeach.Name); 通过对象遍历王小毛周新雨张烨 可以使用和数组类似的方式for (int i = 0; i engineers.Count; i+) SE seFor = (SE)engineersi; Console.WriteLine(seFor.Name);foreach 方式类型转换演示示例:遍历集合元素演示示例:遍历集合元素第第10页页/共共39页页第9页/共39页删除ArrayList的元素ArrayList.Remove(对象名) /删除指定对象名的对象ArrayList.RemoveAt(index) /删除指定索引的对象Array

6、List.Clear() /清除集合内的所有元素engineers.RemoveAt(0); engineers.Remove(ema); MessageBox.Show(string.Format(部门共包括 0 个工程师。, engineers.Count.ToString();SE leave = (SE)engineers0; MessageBox.Show(leave.SayHi(); 通过索引删除元素剩余的元素会自动调整索引通过指定对象删除元素第第11页页/共共39页页第10页/共39页常见错误2-1/添加元素engineers.Add(jack);engineers.Add(jo

7、e);engineers.Add(ema);/删除元素engineers.RemoveAt(0);engineers.RemoveAt(1);engineers.RemoveAt(2);运行这段代码会发生错误?演示示例:常见错误演示示例:常见错误1索引会自动调整,删除两个元素后,不再有索引“2”第第12页页/共共39页页第11页/共39页常见错误2-2/定义三个SE对象(省略)SE se2 = new SE(); se2.Name = 王小毛;se2.Age = 26;engineers.Add(se2);engineers.Remove(se2); /打印集合数目定义一个对象与前面定义的ja

8、ck对象属性值相同Remove(se2),能否删除 jack对象?演示示例:常见错误演示示例:常见错误2第第13页页/共共39页页第12页/共39页小结 学生类Student已定义,属性为:Name、Age 使用ArrayList存储学生集合 添加两个学生(周杰伦,22;杨伊,21) 使用for和foreach遍历学生信息参考答案参考答案第第14页页/共共39页页第13页/共39页 ArrayList通过索引获取对象为什么使用哈希表是否能够通过关键字获取该对象呢?动态可维护长度可通过关键字检索C#提供另一种集合集合:Hashtable SE engineer = (SE) engineers0

9、;ArrayList中元素频繁变化,跟踪元素下标很困难第第15页页/共共39页页第14页/共39页什么是HashTable ArrayList 每个元素对应一个索引 Hashtable 通常称为哈希表 根据键(Key)可以查找到相应的值 (Value)objectobjectobjectobjectobject0123ArrayList索引KeyValueKeyValueKeyValueKeyValueKeyValueHashtable值键键和值一一对应第第16页页/共共39页页第15页/共39页使用哈希表Hashtable engineers = new Hashtable(); engin

10、eers.Add(jack.ID, jack);添加元素KeyValueSE se2 = (SE) engineers000;se2.SayHi();通过key获取元素sengineers.Remove(000);通过key删除元素 给哈希表添加元素获取哈希表的元素删除哈希表的元素需要类型转换演示示例:哈希表操作演示示例:哈希表操作第第17页页/共共39页页第16页/共39页哈希表的遍历foreach(Object obj in engineers.Values) SE se = (SE)obj; Console.WriteLine(se.Name);如何遍历一个如何遍历一个哈希表?哈希表?K

11、eyValueKeyValueKeyValueKeyValueKeyValueValues不能遍历整个对象,而是遍历Valuesforeach (Object obj in engineers.Keys) Console.WriteLine(string)obj); 可以遍历Keys第第18页页/共共39页页第17页/共39页小结 删除一个ArrayList元素有几种方法? Hashtable和ArrayList的主要区别是什么?第第19页页/共共39页页第18页/共39页类型安全2-1PM pm = new PM();pm.Name = 盖茨; pm.Id = 8230;engineers.

12、Add(jack);engineers.Add(joe);engineers.Add(ema);engineers.Add(pm); /添加一个项目经理对象能否加入一个PM对象?foreach (Object obj in engineers) SE engineer = (SE)obj; MessageBox.Show(engineer.SayHi(); 遍历这个集合是否有问题? 考虑出现的问题演示示例:类型安全演示示例:类型安全 第第20页页/共共39页页第19页/共39页类型安全2-2SE集合王小毛周新雨张烨盖茨添加对象遍历集合,转换为SE对象对象存储不易控制类型转换容易出错!PM对象运

13、行错误第第21页页/共共39页页第20页/共39页使用List加强类型安全 使用ListList engineers = new List();engineers.Add(jack); engineers.Add(joe);engineers.Add(ema);engineers.Add(pm); /添加一个项目经理对象将SE对象加入工程师集合编译出错泛型集合演示示例:泛型集合演示示例:泛型集合List保证类型安全保证类型安全第第22页页/共共39页页第21页/共39页什么是泛型集合 泛型最常见的用途是创建集合类 泛型集合可以约束集合内的元素类型 典型泛型集合List,Dictionary 、

14、表示该泛型集合中的元素类型ListSE对象PM对象允许添加允许添加不允许添加不允许添加SE对象无需转换类型无需转换类型第第23页页/共共39页页第22页/共39页使用List泛型集合 命名空间:System.Collections.Generic 创建List泛型集合 遍历List engineers = new List();foreach (SE se in engineers) MessageBox.Show(se.SayHi();只能保存SE对象无需类型转换演示示例:泛型集合演示示例:泛型集合List操作操作VS 2010 自动引入List的访问方式与ArrayList类似第第24页页

15、/共共39页页第23页/共39页List 与 ArrayList 访问 List 与 ArrayList 的对比 是否有哈希表那样存储Key和Value形式的泛型集合呢? 异同点异同点 List ArrayList不同点不同点增加元素时类型严格检查增加元素时类型严格检查可以增加任何类型可以增加任何类型添加和读取值类型元素时,添加和读取值类型元素时,无需装箱拆箱无需装箱拆箱添加和读取值类型元素时,添加和读取值类型元素时,需要装箱拆箱需要装箱拆箱相同点相同点通过索引访问集合的元素通过索引访问集合的元素添加对象方法相同添加对象方法相同通过索引删除元素通过索引删除元素第第25页页/共共39页页第24页

16、/共39页Dictionary概述 Dictionary通常称为字典 约束集合中元素类型 编译时检查类型约束 无需装箱拆箱操作 与哈希表操作类似第第26页页/共共39页页第25页/共39页Dictionary的使用engineers.Add(jack.ID,jack);SE engineer = engineers000;engineers.Remove(000);添加一对Key/Value通过Key获取元素通过Key删除元素/Dictionary 方式foreach (SE se in engineers.Values) MessageBox.Show(se.SayHi(); 遍历Value

17、s演示示例:泛型集合演示示例:泛型集合Dictionary操作操作 Dictionary engineers = new Dictionary();Key存储String类型Value存储SE类型利用Dictionary存储工程师列表第第27页页/共共39页页第26页/共39页Dictionary与哈希表 访问 Dictionary 与 哈希表 的对比异同点异同点 DictionaryHashtable不同点不同点增加元素时类型严格检查增加元素时类型严格检查可以增加任何类型可以增加任何类型无需装箱拆箱无需装箱拆箱需要装箱拆箱需要装箱拆箱相同点相同点通过通过Key获取获取Value添加对象方法相

18、同添加对象方法相同遍历方法相同遍历方法相同第第28页页/共共39页页第27页/共39页泛型 泛型 操作的数据类型被定义为一个参数 泛型类如何选中ComboBox中的一项后,获得对应的一个对象class ComboBoxItem private string _itemText; /显示的文字 public string ItemText get return _itemText; set _itemText = value; private T _itemValue; /实际的对象 public T ItemValue get return _itemValue; set _itemValue

19、 = value; 演示示例:泛型类演示示例:泛型类第第29页页/共共39页页第28页/共39页泛型的重要性 泛型的重要性 泛型是未来的主流技术之一 解决了很多需要繁琐操作的问题 提供了更好的类型安全性 CLR 支持泛型第第30页页/共共39页页第29页/共39页指导新增员工和显示列表2-1 训练要点: 泛型集合List 需求说明: 实现员工信息和考勤管理系统 实现新增员工(员工ID唯一) 使用DataGridView控件展示员工列表第第31页页/共共39页页第30页/共39页指导新增员工和显示列表2-2 实现思路: 实现新增功能 实现展示员工列表功能 难点指导: 向集合List中新增对象 使用maintanceType标识操作(1:新增、0:修改) 验证:工号不能重复 使用DataGridView控件展示集合信息完成时间:30分钟this.dgvProgrammer.DataSource = new BindingList(list);第第32页页/共共39页页第31页/共39页练习模糊查询和信息删除 需求说明: 实现删除员工信息 实现根据员工工号进行模糊查询完成时间:20分钟第第33页页/共共39页页第32页/共39页共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解第第34页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论