- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
12.6 遗留容器类 Java容器框架是从JDK 1.2开始出现的,在此之前的JDK中只有一些简单的、零散的容器类,包括Vector、Stack和Hashtable等,通常将这些类称为遗留容器类。 为向下兼容,从JDK 1.2开始的后续版本(包括目前最新的JDK 11)并未抛弃遗留容器类,而是基于容器框架对它们进行了重新设计。 考虑到很多早期的Java程序使用到了遗留容器类,另一方面,这些类可能也被JDK中的其它API(如Swing)使用了,因此,对这些类也应该有一定了解。 需要注意,在开发新应用时,应尽量避免使用遗留容器类。 12.6 遗留容器类 向量:Vector Vector实现了List接口。从操作特性看,Vector非常像ArrayList——支持以位置来存取容器中的元素。 当程序需要将不确定个数的多个元素以连续方式存储时,应优先考虑使用ArrayList类。 【表12-9 】 Vector有一个子类Stack,表示具有LIFO(Last In First Out,后进先出)特性的栈,其提供了若干方法以支持栈的操作。 当程序需要栈型数据结构时,应优先考虑使用前述Deque接口的实现类,如ArrayDeque 或LinkedList等。 12.6 遗留容器类 哈希表:Hashtable Hashtable继承自Dictionary(字典,该类已被标记为过期) ,后者描述的也是由键到值的映射,故Hashtable的操作特性与前述HashMap类似,但Hashtable不允许包含null对象(键和值都不允许)。 当程序需要根据键找到对应的值时,应优先考虑使用Map接口的实现类(如HashMap)。 【表12-10 】 12.7 容器工具类 实际开发中,经常需要按某种条件对容器或数组进行查找、替换、排序、反转甚至是打乱等操作,尽管可以编写代码去控制这些操作的细节,但这无疑增加了工作量,并且性能也得不到保证。 Java容器框架提供了两个常用的容器工具类——Collections (注意不是Collection) 和Arrays,可以直接调用它们提供的静态方法完成上述操作。 12.7 容器工具类 Collections 包含对容器进行操作或返回容器的众多静态方法,API 见【表12-11 】。 Arrays 包含对数组进行操作(如查找、排序等)的众多静态方法,API 见【表12-12 】。 从JDK 8开始引入了流式 (Stream) API,其涉及的类、接口大多位于java.util.stream包下。流式API借鉴了函数式编程的思想——在对容器对象进行过滤、转换、排序、聚合等操作时,使用流式API仅需编写Lambda表达式以指定具体的计算逻辑,而无须像传统方式那样显式编写循环结构以获得容器中的每个元素,这不仅极大简化了代码,同时能充分利用流式API的惰性计算及并行处理机制而获得性能提升。 12.8 泛型 泛型(Generic)是从JDK 5开始引入的新特性,其本质是将类型参数化,即所操作的对象的类型被指定为一个参数。泛型通常(但不限于)与容器框架一起使用。 为什么需要泛型 12.8 泛型 为什么需要泛型 1、即使元素具有明确的类型 (如Product),但其被添加到容器后,均被当做Object类型,从而失去了之前的真实类型。 2、从容器中取得的元素也是Object类型,需要编写代码做类型的强制转换。 3、编程者事先要清楚知道之前被添加元素的真实类型 ,否则无法正确编写强制转换代码。若转换到了不正确的类型,编译器虽然不会提示任何错误,但在运行时会抛出ClassCastException异常——将错误延后到了程序的运行期,带来了安全隐患。 12.8 泛型 为什么需要泛型 1、泛型的引入使得Java的语法、数据类型、编译器以及API (如容器框架) 都有了较大的变化。除了能解决上述不足之外,泛型带来的最大好处是类型安全。 2、泛型出现之前,被添加到容器中的元素的真实类型是否满足上层人员的设计要求完全取决于编程者 3、通过指定容器所含元素的确切类型,程序在编译期就能由编译器检查出被添加的元素是否满足类型约束,而不会将可能出现的造型错误延后到程序的运行期。 Java语言程序设计 第12章 容器框架与泛型 12.1 核心接口 12.2 常用集合类 12.3 案例实践13:产品排序 12.4 常用列表类 12.5 常用映射类 12.6 遗留容器类 12.7 容器工具类 12.8 泛型 第12章 容器框架与泛型 Java中的容器能够将若干元素按照某种方式组织为一个整体,以方便对这些元素进行添加、删除、
您可能关注的文档
- 自媒体账号运营实践方案.docx
- 坚果pro产品培训资料.pdf
- 坚果pro手机内部培训资料.pdf
- Java编程第00章-课前.ppt
- Java编程第01章-概述.ppt
- Java编程第02章-基本类型与运算符.ppt
- Java编程第03章-程序流程控制.ppt
- Java编程第04章-数组.ppt
- Java编程第05章-类与对象.ppt
- Java编程第06章-抽象类、接口与嵌套类.ppt
- 内蒙古自治区鄂尔多斯市第一中学2025-2026学年第一学期高一年级学业诊断检测12月月考语文试卷含答案.pdf
- 四川省2025-2026学年高三上学期12月阶段性自测地理试卷含答案.pdf
- 林区蓄水池防火配套建设指南.ppt
- 四川省2025-2026学年高三上学期12月阶段性自测历史试卷含答案.pdf
- 云南省2025-2026学年高三上学期12月阶段性自测地理试卷含答案.pdf
- 火灾区域生态修复实施指南.ppt
- 云南省2025-2026学年高三上学期12月阶段性自测历史试卷含答案.pdf
- 云南省2025-2026学年高三上学期12月阶段性自测日语试卷含答案.pdf
- 2025年水产养殖科技合作协议(鱼苗).docx
- 2025年水产养殖苗种繁育合作协议协议.docx
原创力文档


文档评论(0)