package java.util;
//List是一个可以精确控制的集合,与set不同,List允许插入相同的元素
//对List中元素的操作,jdk通常建议我们通过索引进行,而非前移或者后移
//List中对元素的搜索有2中,1是索引,2是直线.从性能来看,应该尽量少用直线搜索
public interface List<E> extends Collection<E>{
//返回集合中元素数量
int size();
//返回集合是否为空(元素数量是否为0)
boolean isEmpty();
//集合中是否存在对象o
boolean contains(Object o);
//返回集合中元素迭代器
Iterator<E> iterator();
//返回元素数组
Object[] toArray();
//返回指定类型的数组
<T> T[] toArray(T[] a);
//在集合中增加一个元素e
boolean add(E e);
//删除集合中第一次出现o的位置
boolean remove(Object o);
//返回集合中是否包含集合c
boolean containsAll(Collection<?> c);
//将c中的元素追加到集合中
boolean addAll(Collection<? extends E> c);
//将c中的元素追加到指定位置index之后
boolean addAll(int index,Collection<? extends E> c);
//删除集合中存在于c中的所有元素
boolean removeAll(Collection<?> c);
//集合中只保留集合与c的交集
boolean retainAll(Collection<?> c);
//删除集合中所有元素
void clear();
//比较2个集合是否相同(集合中的元素是否完全相同,包括顺序)
boolean equals(Object o);
//返回集合哈希值
int hashCode();
//返回集合中index位置元素
E get(int index);
//替换集合中index位置元素,返回以前index位置的元素
E set(int index,E element);
//在指定位置增加元素
void add(int index,E element);
//删除指定位置index的元素并返回
E remove(int index);
//返回o在集合中第一次出现的位置
int indexOf(Object o);
//返回o在集合中最后一次出现的位置
int lastIndexOf(Object o);
//返回一个列表迭代器
ListIterator<E> listIterator();
//返回一个从指定位置index开始的列表迭代器
ListIterator<E> listIterator(int index);
//返回一个列表视图,属于集合中的指定位置
List<E> subList(int fromIndex,int toIndex);
}