C#程序设计基础入门教程(第3版)课件 第5章 集合_第1页
C#程序设计基础入门教程(第3版)课件 第5章 集合_第2页
C#程序设计基础入门教程(第3版)课件 第5章 集合_第3页
C#程序设计基础入门教程(第3版)课件 第5章 集合_第4页
C#程序设计基础入门教程(第3版)课件 第5章 集合_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

第5章集合《C#程序设计基础入门教程(第3版)》学习目标/Target了解集合,能够说出集合的概念与类型。

掌握ArrayList集合的用法,能够使用ArrayList集合批量处理数据。掌握Hashtable集合的用法,能够使用Hashtable集合批量处理键值对形式的数据。学习目标/Target掌握List<T>泛型集合的用法,能够使用List<T>泛型集合批量处理数据。掌握Dictionary<TKey,TValue>泛型集合的用法,能够使用Dictionary<Tkey,TValue>泛型集合批量处理键值对形式的数据。了解自定义泛型的用法,掌握自定义泛型的方法。章节概述/Summary要学习C#,就必须学习使用C#中的集合。C#中的集合就像一个容器,专门用于存储C#类的对象。本章将对集合的相关知识进行详细讲解。目录/Contents010203集合概述非泛型集合泛型集合集合概述5.15.1集合概述了解集合,能够说出集合的概念与类型。学习目标在第2章学习过数组,数组可以批量存储数据,但是在某些情况下,数据的数量是不确定的。例如,要保存一个学校的学生信息,由于不停有新生来报到,也有学生离开学校,学生的人数不是固定不变的,此时数组就不再适用。为了存储数量不确定的数据,C#提供了一系列特殊的类,这些类的对象可以存储任意类型的数据,并且长度可变,这些类统称为集合。5.1集合概述C#中的集合分为非泛型集合和泛型集合,下面分别进行介绍。5.1集合概述非泛型集合位于System.Collections命名空间中,它可以存储多种类型的对象,其中常用的是ArrayList集合和Hashtable集合。非泛型集合泛型集合泛型集合位于System.Collections.Generic命名空间中,它只能存储同一种类型的对象。C#提供了丰富的集合类,它们均直接或间接实现了IEnumerable接口。集合的继承体系如图。5.1集合概述非泛型集合5.2ICollection接口下的实现类属于非泛型集合,常用的非泛型集合包括ArrayList和Hashtable,本节将对这两个集合进行详细讲解。5.2非泛型集合掌握ArrayList集合的用法,能够使用ArrayList集合批量处理数据。学习目标5.2.1ArrayList集合示例代码ArrayList集合可以存储不同类型的对象,就像是一个收纳盒。例如,可以将int、string、object等类型的对象同时添加到ArrayList集合中。5.2.1ArrayList集合ArrayListarr=newArrayList(){"lili",12,'a',3.14};创建ArrayList集合arr,并存储元素。ArrayList集合提供了一系列方法,用于操作集合中的数据,常用的方法如表。5.2.1ArrayList集合方法说明intAdd(objectvalue)将元素添加到ArrayList集合voidAddRange(ICollectionc)将集合或者数组添加到ArrayList集合voidClear()从ArrayList集合中移除所有元素boolContains(objectitem)判断某元素是否在ArrayList集合中intIndexOf(objectvalue)查找指定元素,并返回该元素在ArrayList集合中第一个匹配项的索引5.2.1ArrayList集合方法说明voidInsert(intindex,objectvalue)将元素插入ArrayList集合的指定索引处intLastIndexOf(objectvalue)查找指定元素,并返回该元素在ArrayList集合中最后一个匹配项的索引voidRemove(objectobj)从ArrayList集合中移除指定元素的第一个匹配项voidRemoveAt(intindex)从ArrayList集合中移除指定索引处的元素voidReverse()将整个ArrayList集合中元素的顺序反转voidSort()对整个ArrayList集合中的元素进行排序除了常用的方法,ArrayList集合还提供了一些属性,用于获取集合的相关信息,ArrayList集合常用的属性如表。5.2.1ArrayList集合属性说明Count获取集合中实际包含的元素个数Capacity获取集合的容量,即集合最多可以容纳多少个元素IsReadOnly查询集合是否为只读,如果集合是只读的,返回True,否则返回False下面通过具体的案例讲解ArrayList集合的常用方法和属性。5.2.1ArrayList集合ArrayList集合比较常见的操作就是添加元素,在添加元素时可以调用ArrayList对象的Add()方法、AddRange()方法、Insert()方法。下面通过一个具体的案例来演示向ArrayList集合中添加元素的方法,在解决方案Chapter05中创建一个项目名为Program01的控制台应用程序,具体代码如例。5.2.1ArrayList集合1.添加元素点击查看运行程序,运行结果如图。5.2.1ArrayList集合1.添加元素在Insert(intindex,objectvalue)方法中,第一个参数index表示元素的索引值,第二个参数value表示添加的元素。使用Insert()方法向集合中添加元素时,允许插入元素的索引值比集合的最大索引值大1,此时,新元素会插入集合末尾。如果元素的索引值超过集合的最大索引值且两者差值大于1,编译时就会出现异常,修改Program01\Program.cs的第12行代码,如下所示。索引超出范围示例代码arr1.Insert(arr1.Capacity+1,"2");5.2.1ArrayList集合元素的索引值比集合最大索引值大2,运行后会弹出索引超出范围的异常提示,如图。索引超出范围5.2.1ArrayList集合除了可以向ArrayList集合中添加元素外,还可以调用Remove()方法、RemoveAt()方法和Clear()方法删除元素。下面通过具体的案例来演示如何删除ArrayList集合中的元素。在本案例中,假设几个学生组队参加一个比赛,可以将这几个学生存储到ArrayList集合中。如果中途有人退赛,则调用相应的删除方法删除退赛的学生。比赛结束之后,将团队解散,即删除所有学生。5.2.1ArrayList集合2.删除元素在解决方案Chapter05中创建一个项目名为Program02的控制台应用程序,具体代码如例。5.2.1ArrayList集合点击查看2.删除元素运行程序,运行结构如图。5.2.1ArrayList集合2.删除元素除了调用相应方法向ArrayList集合中添加、删除元素之外,也可以通过索引修改ArrayList集合中的元素。5.2.1ArrayList集合3.修改删除下面通过一个案例来学习如何通过索引修改ArrayList集合中的元素。在本案例中,假设使用ArrayList集合存储学生信息,其中有两个学生的姓名拼写错误,其中一个是将“张山”拼写成“张三”,另一个是将“周晓晓”拼写成了“周小小”,需要进行修改。在解决方案Chapter05中创建一个项目名为Program03的控制台应用程序,具体代码如例。5.2.1ArrayList集合点击查看3.修改删除运行程序,运行结构如图。5.2.1ArrayList集合3.修改删除ArrayList集合也提供了查询方法,可以通过IndexOf()方法、LastIndexOf()方法查询指定元素的索引,通过Contains()方法判断某元素是否在ArrayList集合中。5.2.1ArrayList集合4.查询元素下面通过一个案例来演示ArrayList集合查询方法的应用。在本案例中,假设某班级的学生名单存储在一个ArrayList集合中,现在要查询该班是否有一个姓名为陈茵的学生,如果有,则查询其学号(索引)是多少。在解决方案Chapter05中创建一个项目名为Program04的控制台应用程序,具体代码如例。5.2.1ArrayList集合点击查看4.查询元素运行程序,运行结构如图。5.2.1ArrayList集合4.查询元素虽然for循环可以用于遍历集合中的元素,但写法比较烦琐。为了简化代码的书写,C#提供了foreach循环,foreach循环在遍历集合时语法非常简单,无须添加循环条件,循环的次数由元素个数决定。每次循环时都通过变量记录当前遍历到的元素,进而将集合中的元素遍历输出。通过foreach循环遍历ArrayList集合5.2.1ArrayList集合语法格式foreach(varitemincollection){

执行语句;}用于存储每次遍历的元素为关键字表示被遍历的集合下面通过一个案例来演示foreach循环的用法,在解决方案Chapter05中创建一个项目名为Program05的控制台应用程序,具体代码如例。5.2.1ArrayList集合点击查看通过foreach循环遍历ArrayList集合运行程序,运行结果如图。5.2.1ArrayList集合通过foreach循环遍历ArrayList集合掌握Hashtable集合的用法,能够使用Hashtable集合批量处理键值对形式的数据。学习目标5.2.2Hashtable集合ArrayList集合的一个元素只能存储单个数据,有时候在存储数据时,一个元素可能包含两个部分,例如,存储通讯录中的联系人时,一个元素包含姓名和电话两部分。在存储时,需要将姓名和电话作为一个整体(一个元素)存储,此时ArrayList集合就不再适用。5.2.2Hashtable集合为了解决这类数据的存储,C#提供了Hashtable集合,Hashtable集合的每一个元素都包含两部分,这两部分分别称为键和值,即Hashtable集合存储的元素是一个键值对,因此,Hashtable集合又称为键值对集合。5.2.2Hashtable集合在Hashtable集合中,键具有唯一性,即Hashtable集合中不允许存在重复的键,但值可以重复。元素中的键和值是一一对应关系,通过唯一的键能找到对应的值。键可以作为值的索引,通过索引的方式访问对应的值。5.2.2Hashtable集合Hashtable集合也提供了很多用于获取集合的相关信息的属性,常用的属性如表。属性说明Count获取集合中当前元素的数量IsReadOnly查询集合是否为只读,如果集合是只读的,返回True,否则返回FalseKeys获取包含

Hashtable

中所有键的集合Values获取包含

Hashtable

中所有值的集合5.2.2Hashtable集合下面通过一个案例来演示Hashtable集合的应用,在本案例中,使用Hashtable集合模拟通讯录,对通讯录进行添加、删除、修改、查询等操作。5.2.2Hashtable集合在解决方案Chapter05中创建一个项目名为Program06的控制台应用程序,具体代码如例。点击查看5.2.2Hashtable集合运行程序,运行结果如图。5.2.2Hashtable集合在遍历Hashtable集合时,除了可以通过键来获取对应的值外,还可以直接遍历集合中的值或集合中的元素。下面通过一个例子来演示这两种遍历方式,在解决方案Chapter05中创建一个项目名为Program07的控制台应用程序,具体代码如例。Hashtable集合的多种遍历方式5.2.2Hashtable集合点击查看运行程序,运行结果如图。Hashtable集合的多种遍历方式5.2.2Hashtable集合Hashtable集合中的值和元素都遍历成功了。泛型集合5.3非泛型集合中的所有元素都被当作Object类型,这意味着在访问非泛型集合中的元素时,需要进行类型转换。这种转换操作会降低程序的执行效率,并且还有可能发生InvalidCastException(类型转换失败异常)。为了解决这个问题,C#提供了泛型集合,泛型集合相当于为集合制定了某个限制条件,这个条件使集合中只能存储一种类型的元素。本节将对常用的泛型集合进行讲解。5.3泛型集合掌握List<T>泛型集合的用法,能够使用List<T>泛型集合批量处理数据。学习目标5.3.1List<T>泛型集合List<T>泛型集合类似于ArrayList集合,但它提供了比ArrayList集合更多的方法,而且还提供了额外的类型安全检查和性能优势。与ArrayList不同,List<T>在编译时会进行类型检查,确保只能添加指定类型的元素,从而避免了运行时的类型转换问题。这使得代码更加健壮、易于维护,并且减少了潜在的错误。在大多数情况下,特别是在处理新项目或需要保证类型安全和高性能的场景中,推荐使用List<T>而不是ArrayList。5.3.1List<T>泛型集合下面通过一个案例来演示List<T>泛型集合的用法。在本案例中,模拟一个随机抽奖的游戏,使用List<T>泛型集合存储抽奖人名单,随机生成一个整数作为获奖者索引。抽奖成功之后,将获奖者从名单中删除,进行下一轮抽奖。5.3.1List<T>泛型集合在解决方案Chapter05中创建一个项目名为Program08的控制台应用程序,具体代码如例。5.3.1List<T>泛型集合点击查看运行程序,运行结果如图。5.3.1List<T>泛型集合掌握Dictionary<TKey,TValue>泛型集合的用法,能够使用Dictionary<Tkey,TValue>泛型集合批量处理键值对形式的数据。学习目标5.3.2Dictionary<Tkey,TValue>泛型集合Dictionary<Tkey,TValue>是用于存储键值对的泛型集合,与Hashtable集合不同的是,Dictionary<Tkey,TValue>泛型集合只能存储相同类型的键值对,这就避免了用户在取值时的类型转换问题。Dictionary<Tkey,TValue>泛型集合提供了比Hashtable集合更多的方法,并且还具有类型安全的优势,因此,在处理键值对数据时,Dictionary<Tkey,TValue>泛型集合更为常用。5.3.2Dictionary<Tkey,TValue>泛型集合下面通过具体的案例来演示Dictionary<TKey,TValue>泛型集合的用法,在本案例中,使用Dictionary<Tkey,TValue>

温馨提示

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

评论

0/150

提交评论