1.介绍
List<E>接口继承自Collection<E>,即在Collection<E>接口的基础上添加了一些用于随机访问的操作集合,并且提供了ListIterator<E>迭代器,使得调用者可以方便的双向访问List,对应的方法为listIterator()。
2.主要子类型
ArrayList<E>, LinkedList<E>, Vector<E>
3.主要添加方法
1) get(int index) : E
返回指定位置的元素
2) set(int index, E element) : E
设置指定位置的元素,并返回该位置原来的元素
3) add(int index, E element) :void
将元素添加至指定位置(index),并将该位置原来的元素及其之后的元素顺序向后移动
4) listIterator() : ListIterator<E>
返回该容器上的双向迭代器
5) listIterator(int index) : ListIterator<E>
返回该容器中指向index位置的双向迭代器ListIterator<E>
6) IndexOf(Object o) : int
返回元素o在容器中第一次出现的位置索引
7) lastIndexOf(Object o) : int
返回元素o在容器中最后一次出现的位置索引
8) subList(int fromIndex, int toIndex) : List
返回当前List的子List,从fromIndex到toindex,包含fromIndex位置的元素,不包括toIndex位置的元素,并且返回的子List和原List共享存储,因此在原List和子List里做的任何修改都能如实的反馈给对方。(该方法返回的实际类型为List具体实现类中的内部类类型SubList<E>,内部类可以很方便的共享外部类的数据)
4.default方法-自jdk1.8
1) default replaceAll(UnaryOperator<E> operator) : void
该方法利用该容器上的Iterator,为容器中每个元素element执行operator.apply(element),由于apply方法返回的也是element的类型,因此紧接着调用iterator.set(Eelement)方法,即可实现全部替换
2) default sort(Comparator<? super E> comparator) : void
该方法利用Comparator<? super E> 的int compare(E element1, E element2)方法来比较元素,再进行排序。内部实现为Collections.sort(this, comparator)
3)default splitorator() : Splitorator<E>
返回该容器上的Spliterator<E>,以被stream方法和parallel方法调用
5.总结
List<E>容器在Collection的基础上,提供了一系列的随机访问接口如get(int index),set(int index, E element),remove(int index)等,并提供了双向迭代器ListIterator和获取子List的subList(int fromIndex, int toIndex),也提供了获取指定元素的位置的indexOf(Object o)和lastIndexOf(Object o)方法,这些方法集合极大的方便了调用者对容器修改和获取,也提供了更多的使用容器的自由,使得调用者可以用多种方式来完成指定的操作。