在java中,容器可以简单的分为单例集合和双例集合。单例集合的使用由接口Collection定义。在Collection接口之下,根据容器的中储存元素的特性不同,Collection接口之下又定义了两个子接口——List接口和Set接口。List接口定义的容器中储存的元素是有序,可重复的,而Set接口定义的容器储存的元素是无序、不可重复的元素。
Collection接口
Collection接口是单例集合的根接口,它的下面有List和Set两个子接口。在Collection接口中定义了对单例集合进行操作的多个抽象方法,分别有add、remove、contains、size、isEmpty、clear、iterator、containsAll、addAll、removeAll、retainAll、toArray。通过实现这些方法能够对创建的容器以及容器中的元素进行操作。
boolean add(Object element) :将元素添加到容器中,并返回一个boolean类型的值,添加成功返回true,否则返回false;
boolean remove(Object element) :移除容器中指定的元素,并返回一个boolean类型的值,移除成功返回true。否则返回false;
boolean contains(Object element) :判断容器中是否含有某个元素,并返回一个boolean类型的值,若含有则返回true,否则返回false;
int size() :判断容器中元素的数量
boolean isEmpty() :判断容器是否为空,并返回一个boolean类型的值,如果容器为空则返回true,否则返回false;
void clear() :清空容器中所有元素;
Iterator iterator() :获取一个迭代器,用于遍历容器中的元素;
boolean containsAll(Collection c) :判断本容器中是否包含容器c中的所有元素,若包含返回boolean值true,否则返回false;
boolean addAll(Collection c) :将容器c中的所有元素添加到本容器中,如果添加成功返回true,否则返回false;
boolean removeAll(Collection c) :移除本容器和容器c中都拥有的元素,移除成功返回boolean类型的值true,否则返回值false;
boolean retainAll(Collection c) :获取本容器和容器c中同时拥有的元素,
Object[] toArray() :将本容器转化为Object数组。
List接口
List接口是Cllection接口的子接口,进一步定义了容器中单例集合的特征。List接口定义的容器中的元素是有序可重复的。有序指的是List定义的容器中的元素在存储时都有一个属于自己的索引,通过这个索引可以对容器中的元素进行精确的操作。可重复指的是List定义的容器中的元素可以储存多个相同的元素,这里说的相同指的是在调用方法e1.equals(e2)返回值为true的两个元素,并不仅仅局限于两个地址相同的元素。
List接口作为Collection接口的子接口,继承了Collection接口中的所有的抽象方法,同时,由于List接口定义的容器涉及到了元素的索引,所以在List接口中又额外定义几个抽象方法,用于实现对元素的精准控制。这几个方法分别是add、set、get、remove、indexOf、lastIndexOf。其中add方发和remove方法可以看作是对Collection接口中add方法和remove方法的重载。
void add(int index,Object element):在指定的索引位置插入指定的元素,如果插入位置以及插入位置之后存在元素,那么从那个位置开始,往后的所有元素的索引向后移动一位(包括该位置的原元素);
Object set(int index,Object element):修改指定索引位置的元素;
Object get(int index):获取指定位置的元素;
Object remove(int index):删除指定位置的元素,如果该指定位置的后面存在元素,则后面的所有元素的索引向前移动一位;
int indexOf(Object o):从前往后查找容器中是否存在元素o,并返回第一个与之匹配的元素的索引,如果容器中不存在元素o,则返回值-1;
int lastIndexOf(Object o):从后往前查找容器中是否存在元素o,并返回第一个与之匹配的元素索引,如果容器中不存在元素o,则返回值-1。
从以上介绍的List接口中的抽象方法不难看出,这些在Collection接口的基础上增添的方法中都涉及到了元素索引,因此也能判断,List接口定义的容器最大的特点就是元素的有序性和元素的可重复性,这两个特征是理解List接口定义的容器的关键。