训练师脚本:如何使用泛型与泛型集合.docVIP

  • 1
  • 0
  • 约1.92千字
  • 约 3页
  • 2018-06-25 发布于河南
  • 举报

训练师脚本:如何使用泛型与泛型集合.doc

训练师脚本:如何使用泛型与泛型集合

脚本_ 如何使用泛型和泛型集合 第1页PPT (训练师站在演讲台正中央,精神饱满,声音洪亮) 大家好,今天我们来学习泛型和泛型集合。 (切换PPT) 第2页PPT 我们往ArrayList类型的students集合中添加一个Teacher对象,然后遍历输出。首先我们来判断能否加入一个Teacher对象?(停顿2秒)是可以的,那么遍历这个集合是否有问题呢? (停顿2秒)是有问题的,因为当遍历到jacky 这个对象时,是不能把它转换成Student对象的。 (切换PPT) 第3页PPT 大家看这样一个集合, Student集合中包括了3个学员,(切换PPT)假设我们向Student集合中添加了一个Teacher对象成龙龙,则班级里共包括4个学员。当我们遍历集合时,访问到成龙龙时就会出现运行错误,这说明我们在使用ArrayList集合进行对象存储时不易控制,在类型转换时容易出错,从而引发了集合元素的类型安全问题。我们怎么能做到让添加到集合中的对象都是合法的呢? (切换PPT) 第4页PPT 我们使用泛型集合就可以规范这样的类型安全问题了。首先要引入System.Collections.Generic命名空间,在定义集合时使用ListStudent 来规范集合中存放的元素只能是Student对象,(切换PPT)这样当我们将Teacher对象加入班级时就会引发编译出错,从而将问题消灭在萌芽状态。由于添加的元素都是安全的,所以当我们遍历ListStudent集合时就不会引发错误了。另外大家要注意,这里我们不再需要对数组的元素进行类型转换了,这是因为我们在遍历泛型集合时,定义的遍历对象只需要是元素类型就可以了。 由此可见泛型集合ListT与集合的用法相似,区别是增加元素时严格检查类型保证元素的一致性;遍历时不需要类型转换(装箱拆箱) ,从而提高了安全性和执行效率。 (切换PPT) 第5页PPT 所以说对于ListStudent泛型集合来说,(切换PPT) Student对象是允许添加的,Teacher对象是不允许添加的,(切换PPT) 遍历时无须转换类型了,这就是泛型集合的两大优势。泛型最常见的用途是创建集合类,典型泛型集合有ListT,DictionaryK,V, T、K,V表示该泛型集合中的元素类型,。 (切换PPT) 第6页PPT 下面我们来看泛型集合ListT的应用举例,ListT的访问方式与ArrayList相同,也是使用索引访问和删除,但无需类型转换,遍历时不需要类型转换。 (切换PPT) 第7页PPT 最后我们来总结一下ListT 与 ArrayList区别,两者最大的区别就是ListT在增加元素时类型严格检查,遍历时无需装箱拆箱操作。那么是否有哈希表那样存储Key和Value形式的泛型集合呢? 前面谈到的DictionaryK,V就满足要求。 (切换PPT) 第8页PPT 下面我们来具体介绍一下DictionaryK,V的特性和定义,DictionaryK,V与哈希表类似,是存储Key和Value的泛型集合,区别是编译时检查类型约束;遍历时不需要类型转换(装箱拆箱)。利用DictionaryK,V存储学员集合的定义如下,其中Key存储String类型, value存储Student类型。 (切换PPT) 第9页PPT 我们来看它的访问方式,(切换PPT) DictionaryK,V的访问方式与哈希表相同,添加、获取元素和删除元素时都是通过Key来完成的,遍历元素时也是用到了Values属性,遍历时也是用Student类型无须进行拆箱和装箱了。 (切换PPT) 第10页PPT 最后来总结一下DictionaryK,V与哈希表的区别,最大的区别是编译时检查类型约束;遍历时不需要类型转换(装箱拆箱)。两者的添加元素、获取元素、遍历元素等都是相同的。 (切换PPT) 第11页PPT 最后我们来总结一下泛型的重要性,泛型集合与传统集合相比类型更安全,无需装箱拆箱操作,它是未来五年的主流技术之一,解决了很多需要繁琐操作的问题,通过泛型,我们可以定义类型安全的数据结构,而无需使用实际的数据类型。这能显著提高性能并得到更高质量的代码。而且后续课程还要学习泛型接口。 (切换PPT) 第12页PPT 现在我们上机练习在使用ListT和DirectoryK,V泛型集合添加元素,删除元素,取值,最后遍历每个元素,体会两个泛型集合的用法。 北大青鸟?合作院校事业部 院校教学服务部 第 1 页 共 3 页

文档评论(0)

1亿VIP精品文档

相关文档