Collection是一个接口,它主要的两个分支是:List 和 Set。首先我们来看看Collection关系图:
List和Set都是接口,它们继承于Collection。List和Set都有它们各自的实现类。
- List是有序的队列,List中可以有重复的元素;
- Set是数学概念中的集合,Set中没有重复元素!
1、Collection简介
Collection的定义如下:
public interface Collectionextends Iterable
Collection抽象集合包含了基本操作添加、删除、清空、遍历(读取)、是否为空...
boolean isEmpty();//判断该集合是否为空boolean contains(Object var1);//判断该集合中是否包含某个元素boolean containsAll(Collection var1);//判断该集合中是否包含指定集合中的所有元素int size();//获取该集合元素个数Iteratoriterator();//返回该集合的元素上进行迭代的迭代器Object[] toArray();//返回一个数组,该数组包含容器中的所有元素 T[] toArray(T[] var1);//返回数组并包含容器中所有元素,返回结果的运行时类型与参数数组A类型相同。boolean add(E var1);//向集合中添加一个元素boolean addAll(Collection var1);//将指定Collection中的所有元素添加到该集合中void clear();//删除该集合中的所有元素boolean remove(Object var1);//删除该集合中指定的元素boolean removeAll(Collection var1);//删除指定集合中的所有元素default boolean removeIf(Predicate var1)boolean retainAll(Collection var1);boolean equals(Object var1);int hashCode();default Spliterator spliterator()default Stream stream()default Stream parallelStream()
2、 List简介
List的定义如下:
public interface Listextends Collection
List是一个继承于Collection的接口,即List是集合中的一种。List是有序的队列,List中的每一个元素都有一个索引;第一个元素的索引值是0,往后的元素的索引值依次+1。List中允许有重复的元素。和Set不同,其中的元素必须是唯一的。既然List是继承Collection自然包含Collection的全部函数接口。
boolean isEmpty();//判断该集合是否为空boolean contains(Object var1);//判断该集合中是否包含某个元素boolean containsAll(Collection var1);//判断该集合中是否包含指定集合中的所有元素int size();//获取该集合元素个数Iteratoriterator();//返回该集合的元素上进行迭代的迭代器Object[] toArray();//返回一个数组,该数组包含容器中的所有元素 T[] toArray(T[] var1);//返回数组并包含容器中所有元素,返回结果的运行时类型与参数数组A类型相同。boolean add(E var1);//向集合中添加一个元素void add(int var1, E var2);//将元素element插入在List集合的index处boolean addAll(Collection var1);//将指定Collection中的所有元素添加到该集合中boolean addAll(int var1, Collection var2);//将集合var2所包含的所有元素插入到List集合的index处void clear();//删除该集合中的所有元素E remove(int var1);//删除index索引处的元素boolean remove(Object var1);//删除该集合中指定的元素boolean removeAll(Collection var1);//删除指定集合中的所有元素E get(int var1);//返回集合索引index处的元素E set(int var1, E var2);//将索引index处元素替换成element对象,并将替换后的元素返回int indexOf(Object var1);//返回对象var1在List集合中出现的位置索引int lastIndexOf(Object var1);//返回对象var1在List集合中最后一次出现的位置索引List subList(int var1, int var2);//返回从索引包括到不包括处所有元素集合组成的子集合boolean retainAll(Collection var1);default void replaceAll(UnaryOperator var1)default void sort(Comparator var1)boolean equals(Object var1);int hashCode();ListIterator listIterator();ListIterator listIterator(int var1);default Spliterator spliterator()
3、Set简介
Set的定义如下:
public interface Setextends Collection
Set集合与Collection基本完全一样,它没有提供任何额外的方法。实际上Set就是Collection,只是行为不同(Set不允许包含重复元素)。
boolean isEmpty();//判断该集合是否为空boolean contains(Object var1);//判断该集合中是否包含某个元素boolean containsAll(Collection var1);//判断该集合中是否包含指定集合中的所有元素int size();//获取该集合元素个数Iteratoriterator();//返回该集合的元素上进行迭代的迭代器Object[] toArray();//返回一个数组,该数组包含容器中的所有元素 T[] toArray(T[] var1);//返回数组并包含容器中所有元素,返回结果的运行时类型与参数数组A类型相同。boolean add(E var1);//向集合中添加一个元素boolean addAll(Collection var1);//将指定Collection中的所有元素添加到该集合中void clear();//删除该集合中的所有元素boolean remove(Object var1);//删除该集合中指定的元素boolean removeAll(Collection var1);//删除指定集合中的所有元素default boolean removeIf(Predicate var1)boolean retainAll(Collection var1);boolean equals(Object var1);int hashCode();default Spliterator spliterator()default Stream stream()default Stream parallelStream()
5、AbstractCollection
AbstractCollection的定义如下:
public abstract class AbstractCollectionimplements Collection
AbstractCollection是一个抽象类,它实现了Collection中除iterator()和size()之外的函数。
AbstractCollection的主要作用:它实现了Collection接口中的大部分函数。从而方便其它类实现Collection,比如ArrayList、LinkedList等,它们这些类想要实现Collection接口,通过继承AbstractCollection就已经实现了大部分的接口了。6、AbstractList
AbstractList的定义如下:
public abstract class AbstractListextends AbstractCollection implements List
AbstractList是一个继承于AbstractCollection,并且实现List接口的抽象类。它实现了List中除size()、get(int location)之外的函数。
AbstractList的主要作用:它实现了List接口中的大部分函数。从而方便其它类继承List。 另外,和AbstractCollection相比,AbstractList抽象类中,实现了iterator()接口。7、AbstractSet
AbstractSet的定义如下:
public abstract class AbstractSetextends AbstractCollection implements Set
AbstractSet是一个继承于AbstractCollection,并且实现Set接口的抽象类。由于Set接口和Collection接口中的API完全一样,Set也就没有自己单独的API。和AbstractCollection一样,它实现了List中除iterator()和size()之外的函数。
AbstractSet的主要作用:它实现了Set接口中的大部分函数。从而方便其它类实现Set接口。8、Iterator
Iterator的定义如下:
public interface Iterator
Iterator是一个接口,它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口,包括:是否存在下一个元素、获取下一个元素、删除当前元素。
boolean hasNext();//如果迭代器指向位置后面还有元素,则返回 true,否则返回falseE next();//获得序列中的下一个元素default void remove()//删除集合中Iterator指向位置后面的元素default void forEachRemaining(Consumer var1)
9、ListIterator
ListIterator的定义如下:
public interface ListIteratorextends Iterator
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
ListIterator是一个继承于Iterator的接口,它是队列迭代器。专门用于便利List,能提供向前/向后遍历。相比于Iterator,它新增了添加、是否存在上一个元素、获取上一个元素等等API接口。
// 继承于Iterator的接口boolean hasNext();//以正向遍历列表时,如果列表迭代器后面还有元素,则返回 true,否则返回falseE next();//获得序列中的下一个元素void remove();//从列表中删除next()或previous()返回的最后一个元素(有点拗口,意思就是对迭代器使用hasNext()方法时,删除ListIterator指向位置后面的元素;当对迭代器使用hasPrevious()方法时,删除ListIterator指向位置前面的元素)// 新增API接口boolean hasPrevious();//如果以逆向遍历列表,列表迭代器前面还有元素,则返回 true,否则返回falseE previous();//返回列表中指向位置前面的元素int nextIndex();//返回列表中所需位置后面元素的索引int previousIndex();//返回列表中所需位置前面元素的索引void set(E var1);//从列表中将next()或previous()返回的最后一个元素返回的最后一个元素更改为指定元素evoid add(E var1);//将指定的元素插入列表,插入位置为迭代器当前位置之前