泛型-----键值对----映射 hashmap--entry中key value 链表
connection
map
集合框架
* java.util.Collection
*集合与数组相似,也是可以保存一组元素,并且提供了操作元素的相关方法.
*collection是所有集合的顶级接口,规定了集合应有的基本功能方法
*collection下面两个常见的子接口:
*java.util.List:可重复集,并且有序
*java.util.Set:不可重复集,大部分实现类无序
*元素是否重复依靠元素自身equals比较的结果而定
java5中有泛型,注解,增强循环,自动装箱和自动拆箱
泛型(generics) 能够在编译期检查出错误
class cast异常
编译器
擦除法----一个参数化的类型经过擦除后会去除参数
一开始没有泛型时,若集合中添加的元素类型不一致,会增加使用者的责任(需要记住每一个元素的类型,要不然在运行就会报错),而且编译器也无法甄别错误
泛型的出现就是为了解决上述问题
所谓泛型,就是为了避免强制转换太频繁,增加开发者负担.
所以我们用一个方法定义一个泛型,以list为模板可以实例化很多类,如果传错类型会直接编译不通过
这样子就省去了运行时再发现错误了
但是问题来了,实例化这么多类,系统会不会受不了呢?
这是,我们用到一个方法,擦除,即将Arraylist<integer>直接擦除为Arraylist
所有类型定义为object这个父类,如果你需要转换,设置自动转换类型便可以了
但是我们又得考虑到实现接口,而且得知道apple是fruit的子类
但是Arraylist<fruit>不是Arraylist<apple>的父类
所以推荐使用extends关键字,即<? extends fruit>这种格式来判断
引入一个通配符
Arraylist<? extends fruit> list :只能遍历读list,不能向list中加入新的元素
Arraylist<? super fruit> list : 可以循环遍历,可以向list中加入Apple
系统分层