5 泛型与集合框架

泛型的本质是参数化类型。泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。类型参数只能代表引用型类型,不能是简单数据类型(像int,double,char的等)

1泛型类

class 类名<泛型列表>{} 泛型列表可以有多个类型参数用逗号隔开

类名<具体类型> 对象名 = new 类名<具体类型>()

当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展。现在定义泛型来完成扩展。

泛型相比Object进行扩展的优势:

安全性和消除转换:在进行编译时就检验非法的类型,在返回具体类型时不用强制转换

List list1 = new ArrayList();
list.add(“泛型”);
list.add(1234);
String s = (String)list.get(1);
String s1 = (String)list.get(2);//运行时异常,类型转化错误
List<String> list2 = new ArrayList<String>();
list.add(“泛型”);
list.add(“1234”);//会检查数据类型是否是String
String s = list.get(1);
String s1 = list.get(2);//返回String 不用强制转换

提高性能:不用进行装箱和拆箱,开销巨大。泛型变量固定了类型,使用的时候就已经知道是值类型还是引用类型。

Object a=1;//装箱
int b=(int)a;//拆箱

重用性:

2泛型方法

访问修饰符 [static] [final] <泛型列表> 返回类型(也可以是泛型) 方法名(形式参数列表:一般有泛型参数)

泛型方法所在的类可以不是泛型类

3泛型接口

interface 接口名称<泛型标识>{}

class 实现类名<泛型标识> implements 接口名称<泛型标识>

接口名称/实现类名<具体类型> 对象名 = new 实现类名<具体类型>(...)

java 中泛型标记符:

  • E - Element (在集合中使用,因为集合中存放的是元素)
  • T - Type(Java 类)
  • K - Key(键)
  • V - Value(值)
  • N - Number(数值类型)
  •  - 表示不确定的 java 类型

4泛型集合类

位于java.util包

一种是集合(Collection),存储一个元素集合, 另一种是图(Map),存储键/值对映射。

常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

泛型集合类的统一架构:

List和set的区别:

        1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。

        2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。

        3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 

 5工具类

Collections是集合对象工具类,同样位于java.util包中。它提供了一系列静态方法,能更方便地操作各种集合。常规操作包括创建、排序、洗牌、同步等,不包括删除。 注意Collections结尾多了一个s,不是Collection!

Arrays是数组工具类。

相似的关键字:

final 和 finally

throw和throws 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值