- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7单元 集合(二)
(1)实例操作一:在链表的开头和结尾增加数据 为了达到操作链表的目的,必须直接使用LinkedList类。因为List接口中没有上表中所定义的方法。 (2)实例操作二:找到链表头 在LinkedList中存在很多种找到链表头的操作,其中最常用的介绍如下。 找到表头:public E element()。 找到不删除表头:public E peek()。 找到并删除表头:public E poll()。 (3)实例操作三:以先进先出的方式取出全部的数据 在LinkedList类中存在poll()方法,通过循环此操作,就可以把内容全部取出(以先进先出(FIFO)的方式)。 编译程序可以帮您作第一层防线: 可以在类上声明两个类型持有者: 带两个类型参数的泛型示例: 在JDK 1.5之前的集合框架中可以存放任意的对象到集合中,这样一来在操作时就可能出现因为类型不统一而造成的ClassCastException异常。所以在JDK 1.5之后为了保证类集中所有元素的类型一致,将集合框架进行了升级,加入了泛型,这样就可以保证一个集合中的全部元素的类型是统一的。 在前面的例子中,参数类型可以替换成类的任意类型。在一般情况下,这是没有问题的,但有时程序员需要对传递给类型参数的类型加以限制。 例如需要创建一个泛型类,它包含了一个求数组平均值的方法。这个数组的类型可以是整型、浮点型,但不能是字符串类型或是其他非数值类型。如果程序员写出如下所示的泛型类: nums[i].doubleValue()是返回Integer、Double等数据封装类转换成双精度数后的值,所有的Number类的子类都有这个方法。但问题是,编译器无法预先知道,程序员的意图是只能使用Number类来创建Stats对象,因此,编译时会报告找不到doubleValue()方法。 为了解决上述问题,Java提供了有界类型(bounded types)。在指定一个类型参数时,可以指定一个上界,声明所有的实际类型都必须是这个超类的直接或间接子类。语法形式如下: class? classname T extends superclass 为什么使用通配符? 以Stats类为例,假设在其中存在一个名为doSomething()的方法,这个方法有一个形式参数,也是Stats类型,如下所示: 如果在使用的时候,像下面这样写是有问题的: 解决这个问题的办法是使用Java提供的通配符“?”,它的使用形式如下: genericClassName ? 比如,上面的doSomething可以声明成这个样子: void doSomething(Stats ? ob) 它表示这个参数ob可以是任意的Stats类型,于是调用该方法的对象就不必和实际参数对象类型一致了。 前例说明: 通配符“?”有一个默认的上界,就是Number。如果想改变这个上界,也是可以的,比如: Stats ? extends Integer ob 但是不能写成这样: Stats ? extends String ob因为Integer是Number的子类,而String不是Number的子类。通配符无法将上界改变得超出泛型类声明时的上界范围。 通配符是用来声明一个泛型类的变量的,而不能创建一个泛型类。比如下面这种写法是错误的: class Stats? extends Number{……} 2.不能实例化泛型类型的数组 实际上是创建的数组Object[100] 3.不能实例化泛型参数 4.类的静态变量不能声明为类型参数类型 public class GenClassT { private static T t; //编译错误 } 7.4.2 泛型实例 可以使用泛型机制来声明一个数组 不可以使用泛型来建立数组的实例 public class GenericFooT { private T[] fooArray; // ... } public class GenericFooT { private T[] fooArray = new T[10]; //不可以使用泛型建立数组实例 // ... } 7.4.3 在集合中使用泛型 7.4.3 在集合中使用泛型 ListString all = new ArrayListString(); // 实例化List接口 all.add(hello); // 增加元素 all.add(“good); // 增加元素 all.add(wor
您可能关注的文档
最近下载
- 2024年部编版四年级上册语文大单元作业设计第二单元作业单.pdf VIP
- 美国Megger IDAX300-350绝缘诊断分析仪使用说明书.pdf
- 六年级语文上册1-2单元测试(原卷+答案)2023-2024学年 部编版.docx
- 重油催化裂解增产丙烯研究进展.doc VIP
- 《食品添加剂应用技术》第二版 课件 任务4.2 增稠剂的使用.pptx
- 2023全国青少年文化遗产知识大赛题库附答案(401 -600 题).docx
- 双减背景下新课标单元整体作业分层设计案例 人教版初中英语八年级上册 Unit 1 Where did you go on.docx
- 《哈利波特》书籍分享ppt课件(图文).pptx
- 2.2 中国的气候第1课时 气候复杂多样教学设计 2023-2024学年湘教版地理八年级上册.docx
- 《中国特色社会主义道路的开辟与发展》参考课件.pptx VIP
文档评论(0)