上篇介绍了AbstractCollection抽象类,今天我们介绍List接口
首先还是上UML图,理清集合接口的继承和依赖关系
由上图可知,List接口继承了Collection接口,由AbstractList提供了具体的实现
List的几个特性
- 有序的集合,用户可以通过索引访问list中的元素
- 允许重复的元素
- List接口额外提供了4 个以索引访问List元素的方法
- List接口提供了一个特别的迭代器Listiterator
- List接口提供两个方法来查找指定的元素
- List接口提供了两个在指定位置高效插入和删除多个元素的方法
- 不建议List中的元素引用自身
- 一些List的实现对其元素类型有限制
List接口继承自Collection接口的方法将不再讲述只是简单的列举出来
public interface List<E> extends Collection<E>{
int size();
boolean isEmpty();
boolean contains(Object o);
Iterator<E> iterator();
Object[] toArray();
<T> T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean remove(Collection<?> c);
boolean retainAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
boolean addAll(int index, Collection<? extends E> c);
//索引访问操作
E get(int index);
E set(int index, E element);
void add(int index, E element);
E remove(int index);
//搜索操作
int indexOf(object o);
int lastIndexOf(Object o);
//特殊的迭代器
ListIterator<E> listIterator();
ListIterator<E> listIterator(int index);
//视图
List<E> sublist(int fromIndex, int toIndex);