1.集合架构
interface Collection<E> Java中所有集合的总接口
--1 interface List<E> List接口,数据存储可重复,有序。
----| class ArrayList<E> 可变长数组
----| class LinkedList<E> 双向链表模式
----| class Vector<E> 线程安全的可变长数组
--1 interface Set<E> Set接口,数据存储不可重复,无序。
----| HashSet<E> 底层存储数据的结构是一个哈希表,存储效率。查询效率高
----| TreeSet<E> 底层存储数据的结构是一个平衡二叉树结构,要求必须有比较方式
2.Collection接口下的常用方法
增:boolean add(E e) 添加当前集合约束的指定数据类型到当前集合中
boolean addAll(Collection<? extends E> c) ;
添加另一个集合到当前集合中,要求添加集合中保存的元素必须是当前集合中保存元素本身或者其子类对象【泛型的上限】
删:boolean remove(Object obj); 删除集合中指定的元素,删除成功返回true,未找到指定元素,无法返回false,并且在多个元素的情况下,删除找到的第一个元素
boolean removeAll(Collection<?> c); 在当前集合中删除两个集合的交集
boolean retainAll(Collection<?> c); 在当前集合中保留两个集合的交集
void clear(); 清空整个集合中的所有元素
查: int size(); 有效元素个数
boolean isEmpty(); 判断当前集合是否为空,是否存在有效元素
boolean contains(Object obj); 判断指定元素是都在当前集合中存在
boolean containsAll(Collection<?> c); 判断传入的参数集合是不是当前集合的子集合
Object[] toArray(); 返回集合中所有保存元素的Object类型数组
3.? 泛型通配符
? 表示不限制传入参数Collection集合中的保存元素
4.集合使用迭代器
迭代器和集合本身有着密切关系,迭代器的获取,就是通过集合对象得到对应当前集合的迭代器。
获取迭代器方法:
Iterator<E> iterator();
获取迭代器对象,泛型对应的具体数据类型和集合中约束的泛型具体数据类型一致
迭代器操作常用的方法:
boolean hasNext();
判断当前集合中是否可以继续得到元素,继续遍历
E next();
1.获取迭代器当前指向的元素
2.将迭代器指向下一个元素
void remove();
删除通过next方法获取元素
【注意事项】
1.remove方法只能删除next方法获取到元素
2.remove方法只能在next方法之后执行,且不能跨过一个next执行
3.没有next不能使用remove