`

集合泛型总体介绍

阅读更多

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

实例:

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 库提供了广泛的经典数据结构、丰富的功能、最佳的渐近时间复杂度、记录的性能和经过...

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

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

    Java范例开发大全 (源程序)

     第12章 集合(教学视频:45分钟) 358  12.1 Set 358  实例204 利用HashSet删除学生 358  实例205 不重复的随机数序列 360  实例206 运用映射的相关类(Map) 363  实例207 运用集的相关类(Set) 365 ...

    java范例开发大全(pdf&源码)

    第12章 集合(教学视频:45分钟) 358 12.1 Set 358 实例204 利用HashSet删除学生 358 实例205 不重复的随机数序列 360 实例206 运用映射的相关类(Map) 363 实例207 运用集的相关类(Set) 365 12.2 List 368 实例...

    java范例开发大全源代码

     第12章 集合(教学视频:45分钟) 358  12.1 Set 358  实例204 利用HashSet删除学生 358  实例205 不重复的随机数序列 360  实例206 运用映射的相关类(Map) 363  实例207 运用集的相关类(Set) ...

    java范例开发大全

    14.4 集合泛型类 528 实例268 Hashtable的泛型化 528 实例269 多功能画笔 529 第15章 网络编程(教学视频:52分钟) 534 15.1 IP地址 534 实例270 获取计算机名与IP地址 534 实例271 获取网址的IP地址 535 实例272 ...

    Java范例开发大全(全书源程序)

    第12章 集合(教学视频:45分钟) 358 12.1 Set 358 实例204 利用HashSet删除学生 358 实例205 不重复的随机数序列 360 实例206 运用映射的相关类(Map) 363 实例207 运用集的相关类(Set) 365 12.2 List ...

    asp.net知识库

    Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression Builders 怎么在ASP.NET 2.0中使用Membership asp.net 2.0-...

    Java开发技术大全 电子版

    11.2.4哈希集合(HashSet)使用示例343 11.2.5哈希映射类(HashMap)使用示例347 11.2.6有序树(TreeSet)使用示例349 11.2.7有序树映射类(TreeMap)使用示例353 11.2.8枚举(Enum)使用示例355 11.2.9枚举集...

    java基础案例与开发详解案例源码全

    11.6 泛型概述292 11.7 本章习题300 第12章 12.1 理解线程304 12.1.1 什么是多线程304 12.1.2 进程和线程的区别304 12.1.3 线程的创建和启动305 12.1.4 Thread类介绍308 12.1.5 为什么需要多线程309 12.1.6 线程分类...

    3.ASP.NET 2.0 入门经典(第4版) [压缩包1/10]

    2.1 总体设计目标 27 2.2 Master和Content页面 28 2.2.1 创建Master页面 29 2.2.2 创建Content页面 31 2.2.3 Master和Content页面的示例 32 2.2.4 在Master页面中使用级联样式表 33 2.3 Master页面的其他功能 ...

    领域驱动设计与模式实战

    1.1 总体价值 1.2 应重视的架构风格 1.2.1 焦点之一:模型 1.2.2 焦点之二:用例 1.2.3 如果重视模型,就可以使用领域模型模式 1.2.4 慎重处理数据库 1.2.5 领域模型与关系数据库之间的阻抗失配 1.2.6 谨慎处理...

    传智播客扫地僧视频讲义源码

    01_泛型编程_知识点梳理 02_模板数组类_作业讲解和思想强化(数据类型和算法的分离)_传智扫地僧 03_类型转换_static_cast和reinterpret_cast 04_类型转换_dynamic_cast和reinterpret_cast_传智扫地僧 05_类型转换_...

Global site tag (gtag.js) - Google Analytics