文章目录
集合【重点】
1. 集合
1.1 数组处理数据问题总结
数组完成了增删改查排序过滤,各式各样功能方法。
问题:
1. 数组支持的类型单一,有且只能支持一种类型
2. 如果更换类型,所有相关方法全部再来一变!!!
3. 数组容量一旦确定,后期无法更改!!!
数组处理数据非常繁琐!!!
集合可以帮我们解决以上问题:
1. 集合使用泛型来满足各式各样的数据类型,同时在约束之后,可以满足数据类型一致化要求
2. 集合提供大量的普适性方法。增删改查,排序过滤转换..........
3. 集合保存数据的容量可以根据当前所需自行调整。
1.2 集合组织架构
interface Collection<E>
Java中所有集合的总接口,规定了基本的操作方法,同时约束当前所有的集合都存在泛型约束。
--| interface List<E> extends Collection<E>
List集合,特征: 有序,可重复
--| class ArrayList<E> implements List<E> since V1.1
底层存储结构为数组,ArrayList是一个可变长数组List集合。特征:增删慢,查询快
--| class LinkedList<E> implements List<E>
底层存储结构为【双向链表】结构,特征:增删快,查询慢,并且理论上数据存储数量无限制。
寒假作业: 完成LinkedList<E>源代码
--| class Vector<E> implements List<E> since V1.0
底层存储结构为数组,也是一个可变长数组List集合,是ArrayList上一代版本,注重【线程安全】,效率低
--| interface Set<E> extends Collection<E>
Set集合,特征: 无序,不可重复
--| class HashSet<E> implements Set<E>
底层是【哈希表】结构 同理 Excel 表格,每一个单元格都有唯一编号。
--| class TreeSet<E> implements Set<E>
底层是【平衡二叉树】结构,后期讲解。
1.3 Collection 涉及到的方法
增:
boolean add(E e);
添加当前集合在创建时通过泛型约束的数据类型元素。
boolean addAll(Collection<? extends E> c);
添加另一个集合到当前调用方法集合中,要求参数集合中存储元素是E类型或者其子类对象。
删:
remove(Object obj);
删除当前集合中的指定元素
removeAll(Collection<?> c);
调用方法集合删除与参数集合重叠部分数据
retainAll(Collection<?> c);
调用方法集合保留与参数集合重叠部分数据
clear();
清空整个集合数据
查:
int size();
有效元素个数。
boolean isEmpty();
判断当前集合是否为空,如果为空返回true,否则返回false
boolean contains(Object obj);
判断指定元素是否在当前集合中存在
boolean containsAll(Collection<?> c);
判断参数集合是否是当前集合子集合
Object[] toArray();
返回当前集合中所有元素的Object数组
【补充知识点 泛型的上限】
<? extends E>
<> 泛型
? 通配符
extends 继承
E 自定义泛型占位符
class Animal
class Tiger extends Animal
class Panda extends Animal
class Lion extends Animal
E ==> Animal类型
<? extends Animal>
<? extends E>
要求当前数据类型为E约束对应类型,或者E类型的子类,泛型的上限
1.4 迭代器【非重点】
1.4.1 迭代器图例
1.4.2 迭代器涉及到的方法
获取方法:
通过集合对象都可以获取对应当前集合对象迭代器
Iterator<E> iterator();
操作方法:
boolean hasNext();
判断当前迭代器是否可以继续取出元素。
E next();
取出当前迭代器指向元素,并且指向下一个元素
void remove();
删除元素,有坑
只能删除通过next获取到的元素,并且需要在执行之前有一个next方法
;