泛型

泛型:

         jdk1.5出现的安全机制。

好处:

         1,将运行时期的问题ClassCastException转到了编译时期。

         2,避免了强制转换的麻烦。

 

<>:什么时候用?当操作引用数据类型不确定的时候。就是用<>。将要操作的引用类型转入即可。其实<>就是一个接受具体引用数类型参数范围。

 

在程序中,只要用到了带有<>的类或者接口,就要明确传入的具体引用数据类型。

<E> :E代表引用数据类型(类或者接口)

 

泛型技术是给编译器使用的技术,用于编译时期。确保了类型的安全。

 

运行时,会将泛型去掉,生成的class文件中是不带泛型的,这个称为泛型的擦除。

为什么擦除?因为为了兼容运行时的类加载器。

 

泛型的补偿:在运行时,通过获取元素的类型对进行转换动作。不用使用者在强制转换了。

 

<T>: type的缩写。

 

 

泛型里面不能写基本数据类型。引用的可以   int []

 

 

jdk1.5后,使用泛型来接收类中要操作的引用数据类型。

泛型类。什么时候用?当类中的操作的引用数据类型不确定的时候,就使用泛型来表示。

 

 

泛型方法:将泛型定义在方法上。

当方法静态时,不能访问类上定义的泛型。如果静态方法使用泛型,只能将泛型定义在方法上。泛型的定义一定要放在返回类型的前面,修饰符的后面。

 

泛型接口:将泛型定义在接口上。

 

泛型的通配符:?未知类型。

<? extends Object>

Collection<Person> a1= newArrayList<Studeng>();  左右两边泛型类型不一样。

 

泛型的限定<? extends Person>接收Person类型或者Person的子类型对象。上限。

<? super E>:接收E类型或者E的父类型。下限。

 

一般在存储元素的时候都是用上限,因为这样取出都是按照上限类型来运算的。不会出现类型安全隐患。

什么时候用下限?通常对集合中的元素进行取出操作时,可以使用下限。

泛型视频----10

 

集合的一些技巧:

需要唯一么?

需要:Set

         需要指定顺序么?

                   需要:TreeSet

                   不需要:HashSet

                   但是想要一个和存储一致的顺序(有序):LinkedHashSet

不需要:List

         需要频繁增删么?

                   需要:LinedList

                   不需要:ArrayList

 

 

如何记住每一个容器的结构和所属体系?

看名字

后缀名就是该集合所属体系。前缀名就是该集合的数据结构。

看到array:就要想到数组,查询快,有角标。

看到link:就要想到链表,增删快,就要想到add get remove +first last的方法。

看到hash:就要想到哈希表,唯一性,就要想到元素需要覆盖hashcode和equals方法。

看到tree:就要想到二叉树,排序,就要想到两个接口comparable,comparator。

 

而且通常这些常用的集合容器都是不同步的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值