一、 泛型优点:安全机制,强制转换。
实例:
ArrayList al=new ArrayList();//定义集合 al.add("papapap01"); al.add("papap02"); al.add("ppap03"); al.add("pap01"); Interator it=al.iterator();//迭代器,遍历元素 while(it.hasNext()) { String s=(String)it.next();//强转为String型 System.out.println(S+":"+s.length()); }
s输出:papapap01:9
papap02:7
ppap03:6
pap01:5
ArrayList al=new ArrayList();//定义集合 al.add("papapap01"); al.add("papap02"); al.add("ppap03"); al.add(3);//添加一个Integer类的对象,实际上根据插箱装箱为al.add(new Integer(3)) Interator it=al.iterator();//迭代器,遍历元素 while(it.hasNext()) { String s=(String)it.next();//强转为String型 System.out.println(S+":"+s.length()); }
编译时没有错误,运行时出现classcastException异常。不可能让用户解决这样的问题。于是,在java1.5中引入了泛型,是一个安全机制。
由于,定义容器(集合)时,没有明确类型,打来了非常严重的后果,泛型的出现就是为了给集合元素定义一个类型。就像数组一样,定义的时候就指定了数组类型 int【】 aar=new int【10】;
ArrayList al<String>=new ArrayList<String>();//定义集合,同时限定了类型 al.add("papapap01"); al.add("papap02"); al.add("ppap03"); al.add(3);//添加一个Integer类的对象,实际上根据插箱装箱为al.add(new Integer(3)) Interator it=al.iterator();//迭代器,遍历元素 while(it.hasNext()) { String s=(String)it.next();//强转为String型 System.out.println(S+":"+s.length()); }
由于加入了泛型,直接在编译时就报错。
ArrayList al<String>=new ArrayList<String>();//定义集合,同时限定了类型 al.add("papapap01"); al.add("papap02"); al.add("ppap03"); Interator<String> it=al.iterator();//迭代器,遍历元素,迭代器来源于集合。 while(it.hasNext()) { String s=it.next();//去掉强转,仍能通过 System.out.println(S+":"+s.length()); }
二、泛型格式:通过<>来定义要操作的引用数据类型。类比函数的参数传递
在集合框架里,只要有<>,就必须定义泛型。
相关推荐
编程语言和其他支持泛型的语言的一组泛型集合类(或容器类),由 Microsoft .NET 4.6.1+、.NET Core 2.0+ 实现,和单声道。 C5 库提供了广泛的经典数据结构、丰富的功能、最佳的渐近时间复杂度、记录的性能和经过...
其次,List是.NET Framework 2.0引入的泛型集合,它是ArrayList的替代品,提供了更好的类型安全性和性能。List同样提供了O(1)的索引访问,由于其泛型特性,避免了装箱和拆箱操作,提高了性能。在大多数情况下,List...
在Java集合框架中,提供了多种数据结构用于存储和...由于文档扫描识别可能存在的不准确性,某些字可能未被正确识别,但在总体上,我们可以从中了解到Java集合框架中各个接口和类的用途、特点以及它们之间的关联和区别。
集合类总体可分为一下几类:关联/非关联型集合,顺序/随机访问集合,顺序/无序集合,泛型/非泛型集合,线程安全集合。 各集合类底层接口关系图 背景: public class StockQuantity { public StockQuantity...
- **介绍**:本书开篇简要介绍了C#语言的基本特点和发展历程,为读者提供了一个关于C#语言的总体印象。 - **重点内容**: - C#语言的设计理念及其与.NET框架的关系。 - C#版本历史回顾,包括主要的新特性。 - C#...
集合是由一些明确的、互不相同的对象组成的总体。集合中的元素可以是任何类型的对象。 **1.3.2 常用的数学术语** - **基数**:集合中元素的数量。 - **子集**:一个集合A的所有元素都属于另一个集合B,则称A为B的...
- **集合框架与泛型**: - Java集合框架的组成部分,包括Collection、Set、List、Map等接口及其具体实现类。 - 泛型的概念与优势,如何使用泛型来提高代码的重用性和类型安全性。 - **多线程编程**: - 线程的...
4. **集合框架**:Java集合框架是存储和管理对象的主要方式,包括List、Set、Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等,以及泛型和迭代器的使用。 5. **内存管理和垃圾回收**:Java的自动...
- 简介.txt:可能对整个教程的总体介绍和学习指南。 9. **学习建议** - 按照笔记的章节顺序逐步学习,确保对每个概念都有扎实的理解。 - 结合实践,通过编写代码来巩固理论知识。 - 定期回顾,加深记忆,避免...
概要部分提供了Dart语言的总体介绍,包括它的设计目标和核心原则,例如它是面向对象的、支持类型推断和模式匹配等。 6. 错误和警告 这部分涉及了在编译和执行Dart代码时可能遇到的错误和警告类型,以及如何处理这些...
J2EE总体的学习步骤是一个循序渐进的过程,旨在帮助开发者掌握企业级Java应用程序的开发。以下是基于给定文件内容的详细学习计划: 第一部分,Java语言基础知识是学习J2EE的基石。这部分主要包括以下几个方面: 1....
### J2EE总体学习计划详解 #### 一、基础Java知识 在开始深入学习J2EE之前,首先需要掌握基础的Java知识,包括但不限于异常处理、输入输出流、多线程编程、集合框架以及数据库连接等方面。 - **异常处理**:理解`...
课程内容涵盖了Java语言的各个方面,包括基础语法、程序结构、类与对象、封装、继承、多态、异常处理、集合与泛型、JDBC数据库操作、输入输出、多线程以及网络编程和Swing桌面应用开发。 在教学过程中,课程采用了...
这些特性让Java更加强大且灵活,反射可以动态操作类和对象,注解用于提供元数据,泛型增加了类型安全性,枚举则为常量集合提供了更好的管理方式。 以上是对每个章节内容的推测,具体的学习材料可能会根据作者的安排...
- **PAL 概览**:提供了关于 PAL 的总体介绍,它是 CLI 与操作系统之间的一个抽象层。 - **共同基础设施**:讨论了 PAL 中用于支持 CLI 运行的基本功能和服务。 - **进程与线程管理**:介绍了 PAL 中如何管理和协调...
这份文档由谷歌翻译提供,尽管机器翻译可能存在一定的语言准确度问题,但总体上仍能帮助中文用户理解并使用Java 1.8中的各种功能和接口。以下将详细介绍Java 1.8 API中的关键知识点。 1. **基础类库**:Java 1.8的...
多维数组在访问元素时,通过调用`Get`方法来计算实际的索引位置,这可能会稍微增加计算时间,但总体上仍然保持较高的效率,特别是在处理固定尺寸的矩阵时。 ### 性能比较 从性能角度来看,一维数组通常提供最快的...
- **Collections类**:介绍用于操作集合的工具类Collections。 - **泛型**:讲解泛型的概念及在Java中的应用。 #### 12. 多线程 - **线程生命周期**:描述线程从创建到消亡的各个阶段。 - **线程调度与优先级**:...