Collection集合和List集合
1. Collection集合
1.1 为什么要使用集合
Java中提供给程序开发使用处理数据结构的一种方式。
数组的局限性太大了!!!
1. 数组要求数据类型一致化!!!
2. 数组的容量确定之后无法更改!!!
3. 数组操作没有太多的配套方法,需要程序员自己完成!!!
集合解决的问题:
1. 可以满足多个数据类型,但是同时又做到了数据类型一致化操作【泛型】
2. 底层保存数据的容量是可以发生改变的
3. 有足够多的配套方法,可以满足最基本的增删改查操作 CRUD
1.2 Collection集合
Collection集合,首先是一个接口 是Java中所有集合的总接口!!!
Collection<E>
--| List<E> 特征: 有序,可重复 接口
----| class ArrayList<E> 可变长的数组
----| class LinkedList<E> 底层为双向链表的集合结构
----| class Vector<E> 线程安全的可变长数组,是ArrayList他爹
--| Set<E> 特征: 无序,不可重复 接口
----| class HashSet<E> 底层存储数据的结构是一个哈希表
----| class TreeSet<E> 底层存储数据的结构是一个平衡二叉树结构
1.3 Collection接口下的常用方法
增
add(E e); 添加集合中指定类型元素的对象保存到集合的末尾。
addAll(Collection<? extends E> c);
添加另一个集合到当前集合中,要求另一个集合中的元素要不是当前集合中存
储元素本身,或者存储元素子类对象
class Dog extends Animal
class SingleDog extends Animal
class PFSP extends Animal
? extends Animal 泛型的上限
删
clear(); 清空整个集合
remove(Object obj); 删除指定元素
removeAll(Collection<?> c); 删除两个集合的交集
retainAll(Collection<?> c); 保留两个集合的交集
改
none
查
int size(); 有效元素个数
boolean isEmpty(); 当前集合是否为空,如果是返回true,不是返回false
boolean contains(Object obj); 判断当前集合中是否存在指定元素obj
boolean containsAll(Collection<?> c);
判断传入的集合是不是当前集合的子集合
迭代器
boolean hasNext(); 判断当前迭代器是否可以继续迭代
E next(); 获取当前迭代器指向的元素,并且指向下一个元素!!!
void remove(); 删除
【注意】 删除的元素有且只能是通过next获取的元素,并且
需要紧挨着next方法
2. List
2.1 List特征和常用方法
List接口特征:
有序 : 添加顺序和存储顺序一致
可重复 : 保存元素中允许出现相同元素
List接口是继承Collection接口,也就是说,可以使用Collection接口下的所有方法:
增:
add(E e); 添加符合当前集合要求的元素到集合末尾。
add(int index, E e); 添加符合当前集合要求的元素,到集合中的指定下标位置
addAll(Collection<? extends E> c);
添加另一个集合到当前集合的末尾,要求其中保存的元素是当前集合中元素,
或者其子类对象
addAll(int index, Collection<? extends E> c);
在指定下标位置条件另一个集合元素,求其中保存的元素是当前集合中元素,
或者其子类对象
删:
clear(); 删除集合中的所有元素
remove(Object obj); 删除集合中的指定元素
removeAll(Collection<?> c); 删除两个集合的交集
retainAll(Collection<?> c); 保留两个集合的交集
remove(int index); 删除集合中指定下标的元素
改:
E set(int index, E e);
使用指定元素替换指定下标的元素,并且返回被替换元素
查:
int size(); 有效元素个数
boolean isEmpty(); 判断List集合是否为空
boolean contains(Object obj); 判断当前集合中是否包含指定元素
boolean containsAll(Collection<?> c); 判断c是不是当前集合的子集合
int indexOf(Object obj); 找出指定元素在集合中第一次出现的位置
int lastIndexOf(Object obj); 找出指定元素在集合中最后一次出现的位置
List<E> subList(int fromIndex, int toIndex);
获取当前集合的子集合,要求从fromIndex下标开始,到toIndex下标结束,
且要头不要尾
E get(int index); 获取指定下标的元素