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

内容发布更新时间 : 2024/5/2 23:03:51星期一 下面是文章的全部内容请认真阅读。

北大青鸟?合作院校事业部 院校教学服务部

脚本_ 如何使用泛型和泛型集合

第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命名空间,在定义集合时使用List 来规范集合中存放的元素只能是Student对象,(切换PPT)这样当我们将Teacher对象加入班级时就会引发编译出错,从而将问题消灭在萌芽状态。由于添加的元素都是安全的,所以当我们遍历List集合时就不会引发错误了。另外大家要注意,这里我们不再需要对数组的元素进行类型转换了,这是因为我们在遍历泛型集合时,定义的遍历对象只需要是元素类型就可以了。 由此可见泛型集合List与集合的用法相似,区别是增加元素时严格检查类型保证元素的一致性;遍历时不需要类型转换(装箱拆箱) ,从而提高了安全性和执行效

第 1 页 共 3 页

北大青鸟?合作院校事业部 院校教学服务部

率。

(切换PPT)

第5页PPT

所以说对于List泛型集合来说,(切换PPT) Student对象是允许添加的,Teacher对象是不允许添加的,(切换PPT) 遍历时无须转换类型了,这就是泛型集合的两大优势。泛型最常见的用途是创建集合类,典型泛型集合有List,Dictionary, 表示该泛型集合中的元素类型,。

(切换PPT)

第6页PPT

下面我们来看泛型集合List的应用举例,List的访问方式与ArrayList相同,也是使用索引访问和删除,但无需类型转换,遍历时不需要类型转换。

(切换PPT)

第7页PPT

最后我们来总结一下List 与 ArrayList区别,两者最大的区别就是List在增加元素时类型严格检查,遍历时无需装箱拆箱操作。那么是否有哈希表那样存储Key和Value形式的泛型集合呢? 前面谈到的Dictionary就满足要求。

(切换PPT)

第8页PPT

下面我们来具体介绍一下Dictionary的特性和定义,Dictionary与哈希表类似,是存储Key和Value的泛型集合,区别是编译时检查类型约束;遍历时不需要类型转换(装箱拆箱)。利用Dictionary存储学员集合的定义如下,其中Key存储String类型, value存储Student类型。

(切换PPT)

第9页PPT

我们来看它的访问方式,(切换PPT) Dictionary的访问方式与哈希表相同,添加、获取元素和删除元素时都是通过Key来完成的,遍历元素时也是用到了Values属性,

第 2 页 共 3 页

北大青鸟?合作院校事业部 院校教学服务部

遍历时也是用Student类型无须进行拆箱和装箱了。

(切换PPT)

第10页PPT

最后来总结一下Dictionary与哈希表的区别,最大的区别是编译时检查类型约束;遍历时不需要类型转换(装箱拆箱)。两者的添加元素、获取元素、遍历元素等都是相同的。

(切换PPT)

第11页PPT

最后我们来总结一下泛型的重要性,泛型集合与传统集合相比类型更安全,无需装箱拆箱操作,它是未来五年的主流技术之一,解决了很多需要繁琐操作的问题,通过泛型,我们可以定义类型安全的数据结构,而无需使用实际的数据类型。这能显著提高性能并得到更高质量的代码。而且后续课程还要学习泛型接口。

(切换PPT)

第12页PPT

现在我们上机练习在使用List和Directory泛型集合添加元素,删除元素,取值,最后遍历每个元素,体会两个泛型集合的用法。

第 3 页 共 3 页