public interface List<E> extends Collection<E>
可以看到List接口是Collection接口的子类,大量扩容了Collection集合中没有的方法。
List是一个有序集合,元素可以重复。List接口的子类主要有ArrayList,vector,LinkedList。
List接口下的方法
int size()
返回此列表中的元素数
如果此列表包含多个Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE
boolean isEmpty()
如果列表中不包含任何元素则返回true。
boolean contains(Object o)
如果列表中包含指定的元素,则返回true。
Iterator<E> iterator()
以迭代器的方式顺序遍历列表中的元素。
Object[] toArray();
以顺序返回包含此列表中所有元素的数组,也就是将list返回一个新的数组对象。
T[] toArray(T[] a)
可以看到这里用到了泛型,那么返回的就是一个指定类型的数组对象。
boolean add(E e)
E是泛型 e是要附加到此列表末尾的元素
返回true
boolean remove(Object o);
从此列表中删除第一次出现的指定元素(如果存在)
如果包含要删除的元素o,则返回true
boolean containsAll(Collection<?> c)
如果此列表包含指定集合的所有元素,则返回true 。
boolean addAll(Collection<? extends E> c)
将集合中所有元素附加到列表末尾。
boolean addAll(int index, Collection<? extends E> c)
相比上一个多了一个index地址,可以指定将列表中所有元素插入到此列表的指定位置。
boolean removeAll(Collection<?> c)
从此列表中删除包含在指定集合中的所有元素。
boolean retainAll(Collection<?> c);
保留列表中在指定集合中的元素,未存在改集合中的元素将被删除。
default void replaceAll(UnaryOperator<E> operator)
用将运算符应用于该元素的结果替换此列表的每个元素。 操作员抛出的错误或运行时异常被转发给调用者。
@SuppressWarnings({"unchecked", "rawtypes"})
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
根据由指定的Comparator引起的顺序对此列表进行排序。此列表中的所有元素必须使用指定的比较器相互比较(即,对于列表中的任何元素e1和e2 , c.compare(e1, e2)不得抛出ClassCastException )。如果指定的比较器为null则此列表中的所有元素都必须实现Comparable接口,并且应使用元素的自然顺序。此列表必须是可修改的,但不需要可调整大小。
抑制警告unchecked是用来抑制没有进行类型检查操作的警告;rawtypes是使用 generics 时忽略没有指定相应的类型
将list转为数组再通过Comparator 比较列表元素进行排序,并且迭代此列表,从数组的相应位置重置每个元素。
void clear();
删除列表中的所有元素,调用后列表为空。
boolean equals(Object o);
比较指定的对象于此列表是否相等,只有当指定的对象也是一个列表且列表的长度且列表中的所有对应元素都相等的时候才返回true。
int hashCode()
返回此列表的哈希值
列表的哈希值计算:
int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
get(int index)
返回指定位置的列表元素
set(int index, E element)
用指定元素替换指定位置中的元素
void add(int index, E element)
在指定位置插入元素
remove(int index)
删除指定位置元素
int indexOf(Object o)
返回此列表中第一次出现该元素的索引,如果没有该元素则返回-1
int lastIndexOf(Object o)
返回此列表中最后一次出现该元素的所有索引,如果没有该元素则返回-1;
ListIterator<E> listIterator()
返回此列表中元素的迭代器(按顺序)
ListIterator<E> listIterator(int index)
从列表的指定位置返回列表元素的迭代器
List<E> subList(int fromIndex, int toIndex);
从指定位置到指定位置返回一个列表的视图,在控制台中可以发现,显示的数据类似数组,
通过这种方式我们可以指定一个范围进行操作。
如:
list.subList(0,5).clear();
这样列表中的前5个元素就被删除了。
default Spliterator<E> spliterator()
在此列表中的元素上创建一个Spliterator 。Spliterator报告Spliterator.SIZED和Spliterator.ORDERED 。 实现应记录附加特征值的报告。返回此列表中元素的Spliterator默认实现从列表的Iterator创建一个后期绑定拆分Iterator 。 拆分器继承了列表迭代器的快速失败属性。
Splliter接口拆分迭代器,支持以分割的方式遍历。