Collection集合体系
前言
数组能够用于存储固定长度的一组对象,如果我们存储的对象个数不确定时,使用数组结构进行存储就不太合适,数组长度过长则造成内存资源浪费,并且在取值时也会存在无法定位最后一个数组元素的问题;数组长度过短则造成数组溢出;所以在存储个数不确定的一组对象时,Java中提供了Collection集合体系。
Collection框架
Collection接口是父级接口,提供了集合操作的基本方法其中包含了以下操作:
- size() 获取元素个数
- isEmpty() 判断集合是否为空
- contains(Object o)、containsAll(Collection<?> c) 判断是否包含元素
- add(Object o)、addAll(Collection<? extends E> c) 添加元素
- remove(Object o)、remove(Collection<? extends E> c) 移除元素
- clear() 清空元素
- retainAll(Collection<?> c) 保留相同的元素
- toArray()、toArray(T[] a) 转换成数组
- iterator() 获取迭代器用于遍历集合
- equals(Object o) 判断两个集合是否相同
- hashCode() 计算集合的hash值
List接口继承了Collection接口,在Collection的基础上,增加了随机访问的方法,具体操作一下:
- get(int index)根据索引访问元素
- set(int index, E element) 修改元素
- add(int index, E element) 插入元素
- remove(int index) 移除元素
- indexOf(Object o) 查询索引(正序)
- lastIndexOf(Object o) 查询索引(倒序)
- subList(int fromIndex,int endIndex) 截取集合
- listIterator() 获取迭代器
- listIterator(int index) 获取迭代器
Set接口继承于Collection接口,方法与Collection中定义的方法一致。
List与Set
List接口的实现可以进行随机访问(可以通过索引访问),List集合中存储的元素是有序的,可以存放重复的元素
Set接口的实现不能进行随机访问,Set集合不能存放重复的元素