Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第9章 泛型与集合框架.ppt

Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第9章 泛型与集合框架.ppt

ID:50325270

大小:612.50 KB

页数:61页

时间:2020-03-08

Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第9章 泛型与集合框架.ppt_第1页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第9章 泛型与集合框架.ppt_第2页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第9章 泛型与集合框架.ppt_第3页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第9章 泛型与集合框架.ppt_第4页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第9章 泛型与集合框架.ppt_第5页
资源描述:

《Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第9章 泛型与集合框架.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章泛型与集合框架主讲人:程裕强主要内容理解为什么需要泛型掌握泛型类的定义理解泛型通配符了解泛型上限掌握三个通过泛型改进的数据结构理解Java的集合框架掌握Collection接口掌握迭代器Interator接口掌握遍历集合的多种方法掌握Set接口以及实现类HashSet和TreeSet掌握List接口以及实现类ArrayLis、LinkedList和Vector掌握Map接口以及实现类HashMap、Hashtable和TreeMap9.1泛型9.1.1为什么需要泛型在《数据结构》课程中常以int型的数据域为例来定义

2、各种数据结构。当需要其他类型的数据域时,需要重新定义数据域的类型,这样就产生多个同构的数据结构。Java世界中一切皆对象,根类是Object类,有一般性意义。可以将数据域定义为Object类型。事实上,早期的Java语言类库提供了一个链表类LinkedList,其数据域类型正是使用Object类型来解决这个问题。但是,Object类型的数据域又引来新的问题:元素类型丢失。例1:Object数据域的元素类型丢失问题。classPoint{publicObjectx;//x坐标publicObjecty;//y坐标publi

3、cPoint(){}publicPoint(Objectx,Objecty){this.x=x;this.y=y;}}publicclassPointTest1{publicstaticvoidmain(String[]args){Pointp=newPoint(1,2.0);intx=(Integer)p.x;//Point忘记了y坐标的类型,编译通过,执行出错inty=(Integer)p.y;System.out.println("("+x+","+y+")");}}将元素加入集合中后,集合中的元素都将丢失其数据类

4、型,统一为Object类型。编译程序PointTest1时通过,但是在执行该程序时提示出错。9.1.2引入泛型在Java5时引入了泛型,泛型允许类的成员的类型可以由外部程序来指定,也就是说可以以参数形式来指定类型。泛型类声明格式如下:修饰符class类名<泛型>{类成员;}其中“范型”参数可以作为类的成员的类型、方法的类型。例2:通过泛型机制改进后Point类,程序编译时进行语法检查。classPoint{publicTx;//x坐标publicTy;//y坐标publicPoint(){}publicPoint(

5、Tx,Ty){this.x=x;this.y=y;}}publicclassPointTest2{publicstaticvoidmain(String[]args){//声明一个引用变量,这时泛型已经确定为IntegerPointp;//进行类型检查,编译不通过p=newPoint(1,2.0);}}属性和方法的类型确定后,就可以在编译时进行类型语法检查,使代码更安全。上例中,检查出2.0的类型不是Integer,编译不通过。9.1.3类型通配符如果传递的是泛型类型的参数,必须匹配才

6、能传递成功;在类型转型时,子类对象会自动转换为父类对象(上转型)。但是在使用泛型时却没有这样操作,比如泛型“Point”不是“Point”的子类型。例3:下面程序PointTest3演示了传递参数的类型是泛型类型时遇到的问题publicclassPointTest3{publicstaticvoidshow(Pointp){//无法确定TSystem.out.println("("+p.x+","+p.y+")");}publicstaticvoidmain(String[]arg

7、s){Pointp=newPoint(1,1);show(p);//实参是p,不是Integer}}可以使用通配符“?”,就是一种类型通配符,表示可以接收任意的类型,只接收类型不能修改类型。例4:使用类型通配符“?”。publicclassPointTest4{publicstaticvoidshow(Pointp){System.out.println("("+p.x+","+p.y+")");}publicstaticvoidmain(String[]args){Point<

8、Integer>p=newPoint(1,1);show(p);}}9.1.4泛型上限泛型上限就是指泛型的最大的父类。比如将泛型上限设置为Number类,则泛型上限声明为:。即表示该泛型能接收的类型为Number类和Number的子类(Integer、Long、Dou

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。