day02--------------------------------------------
单列集合 Collection集合框架
List接口 有索引 底层是数组 可扩容
Set接口 无索引 底层是哈希表 不允许重复 存储和取出无序
iterator接口 迭代器
为了屏蔽底层的不同,使用迭代器迭代
Collection中有个方法iterator(),返回迭代器的实现类,使用Iterator对象接收(多态)
hasNext();//判断是否还有下一个
next();//取出下一个元素
迭代器的并发修改异常
指的是在使用迭代器的过程中,修改了集合的长度,就会抛出并发修改异常
并发:正在迭代+修改了集合长度
解决方法:
1.不修改长度
2.使用ListIterator接口中的add/remove方法
for-each循环
底层使用的是迭代器
同样不能进行修改长度
泛型
限定容器的数据类型
数据类型未知,创建对象时会把数据类型作为参数传递,从而确定数据类型
泛型将数据类型灵活的运用到类、接口、方法上,作为参数传递
泛型类
不写泛型 默认泛型为Object
设置了泛型 该类的方法只能为设置的泛型类型
泛型方法
传递的是什么泛型类型,参数就是什么类型
泛型接口
定义接口的实现类,实现接口,并直接在实现接口的时候指定接口的泛型
如果实现接口时指定了泛型,实现类也只能是这个泛型
泛型通配符
?:任意数据类型
不能在创建对象的时候使用,只能作为方法的参数使用
受限泛型
上限限定[常用]:
格式: <? extends E> 代表使用的泛型只能是E类型的子类/本身
下限限定:
格式: <? super E> 代表使用的泛型只能是E类型的父类/本身
注意:泛型没有继承概念
java疯狂讲义修订版(红)
深入理解java虚拟机 周志明 |
|