`

集合泛型总体介绍

阅读更多

  一、 泛型优点:安全机制,强制转换。

实例:

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());
}

 二、泛型格式:通过<>来定义要操作的引用数据类型。类比函数的参数传递

在集合框架里,只要有<>,就必须定义泛型。

分享到:
评论

相关推荐

    java笔试题算法-C5:用于C#/.NET的C5泛型集合库

    编程语言和其他支持泛型的语言的一组泛型集合类(或容器类),由 Microsoft .NET 4.6.1+、.NET Core 2.0+ 实现,和单声道。 C5 库提供了广泛的经典数据结构、丰富的功能、最佳的渐近时间复杂度、记录的性能和经过...

    C# 集合的索引性能比较

    其次,List是.NET Framework 2.0引入的泛型集合,它是ArrayList的替代品,提供了更好的类型安全性和性能。List同样提供了O(1)的索引访问,由于其泛型特性,避免了装箱和拆箱操作,提高了性能。在大多数情况下,List...

    Java集合框架.pdf

    在Java集合框架中,提供了多种数据结构用于存储和...由于文档扫描识别可能存在的不准确性,某些字可能未被正确识别,但在总体上,我们可以从中了解到Java集合框架中各个接口和类的用途、特点以及它们之间的关联和区别。

    .Net中的集合排序可以这么玩你知道吗

    集合类总体可分为一下几类:关联/非关联型集合,顺序/随机访问集合,顺序/无序集合,泛型/非泛型集合,线程安全集合。 各集合类底层接口关系图 背景: public class StockQuantity { public StockQuantity...

    Apress.Accelerated.C#.2008.pdf

    - **介绍**:本书开篇简要介绍了C#语言的基本特点和发展历程,为读者提供了一个关于C#语言的总体印象。 - **重点内容**: - C#语言的设计理念及其与.NET框架的关系。 - C#版本历史回顾,包括主要的新特性。 - C#...

    C#版数据结构(C#语言版)

    集合是由一些明确的、互不相同的对象组成的总体。集合中的元素可以是任何类型的对象。 **1.3.2 常用的数学术语** - **基数**:集合中元素的数量。 - **子集**:一个集合A的所有元素都属于另一个集合B,则称A为B的...

    Java软件开发实战 Java基础与案例开发详解 17-2 总体设计 共5页.pdf

    - **集合框架与泛型**: - Java集合框架的组成部分,包括Collection、Set、List、Map等接口及其具体实现类。 - 泛型的概念与优势,如何使用泛型来提高代码的重用性和类型安全性。 - **多线程编程**: - 线程的...

    Thinking in Java

    4. **集合框架**:Java集合框架是存储和管理对象的主要方式,包括List、Set、Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等,以及泛型和迭代器的使用。 5. **内存管理和垃圾回收**:Java的自动...

    良葛格java jdk 5.0学习笔记

    - 简介.txt:可能对整个教程的总体介绍和学习指南。 9. **学习建议** - 按照笔记的章节顺序逐步学习,确保对每个概念都有扎实的理解。 - 结合实践,通过编写代码来巩固理论知识。 - 定期回顾,加深记忆,避免...

    dart-spec-2-2.pdf

    概要部分提供了Dart语言的总体介绍,包括它的设计目标和核心原则,例如它是面向对象的、支持类型推断和模式匹配等。 6. 错误和警告 这部分涉及了在编译和执行Dart代码时可能遇到的错误和警告类型,以及如何处理这些...

    J2EE总体的学习步骤

    J2EE总体的学习步骤是一个循序渐进的过程,旨在帮助开发者掌握企业级Java应用程序的开发。以下是基于给定文件内容的详细学习计划: 第一部分,Java语言基础知识是学习J2EE的基石。这部分主要包括以下几个方面: 1....

    J2EE总体学习计划

    ### J2EE总体学习计划详解 #### 一、基础Java知识 在开始深入学习J2EE之前,首先需要掌握基础的Java知识,包括但不限于异常处理、输入输出流、多线程编程、集合框架以及数据库连接等方面。 - **异常处理**:理解`...

    JAVA语言程序设计课程标准.doc

    课程内容涵盖了Java语言的各个方面,包括基础语法、程序结构、类与对象、封装、继承、多态、异常处理、集合与泛型、JDBC数据库操作、输入输出、多线程以及网络编程和Swing桌面应用开发。 在教学过程中,课程采用了...

    Java程序设计(1).rar

    这些特性让Java更加强大且灵活,反射可以动态操作类和对象,注解用于提供元数据,泛型增加了类型安全性,枚举则为常量集合提供了更好的管理方式。 以上是对每个章节内容的推测,具体的学习材料可能会根据作者的安排...

    Shared Source CLI Essentials (2nd Edition) Draft

    - **PAL 概览**:提供了关于 PAL 的总体介绍,它是 CLI 与操作系统之间的一个抽象层。 - **共同基础设施**:讨论了 PAL 中用于支持 CLI 运行的基本功能和服务。 - **进程与线程管理**:介绍了 PAL 中如何管理和协调...

    Java 1.8中文API手册

    这份文档由谷歌翻译提供,尽管机器翻译可能存在一定的语言准确度问题,但总体上仍能帮助中文用户理解并使用Java 1.8中的各种功能和接口。以下将详细介绍Java 1.8 API中的关键知识点。 1. **基础类库**:Java 1.8的...

    C#中各种数组的性能比较

    多维数组在访问元素时,通过调用`Get`方法来计算实际的索引位置,这可能会稍微增加计算时间,但总体上仍然保持较高的效率,特别是在处理固定尺寸的矩阵时。 ### 性能比较 从性能角度来看,一维数组通常提供最快的...

    Java软件开发实战 Java基础与案例开发详解 20-1 项目实战2-网络五子棋与网络版JQ的开发 共17页.pdf

    - **Collections类**:介绍用于操作集合的工具类Collections。 - **泛型**:讲解泛型的概念及在Java中的应用。 #### 12. 多线程 - **线程生命周期**:描述线程从创建到消亡的各个阶段。 - **线程调度与优先级**:...

Global site tag (gtag.js) - Google Analytics