List集合表明一个元素有序、可重复的集合,集合中的每个元素都有其对应的顺序索引,List集合容许使用重复元素,能够经过索引来访问指定位置的集合元素。数组
1.List做为Collection接口的子接口,固然可使用Collection接口里面的全部的方法。并且因为List集合有序他还有一些新方法,void add(int index,Object element)将元素element插入到指定的位置;boolean addAll(int index,Collection c)将集合c所包含的全部元素都插入到List集合的index位置处;Object get(int index)返回集合index索引出的元素;int indexOf(Object o)返回对象o在List集合中一次出现的位置索引;int lastIndexOf(Object o)返回对象o在list集合中最后一次出现的位置索引;Object remove(int index)删除并返回index索引处的位置;Object set(int index,Object element)将index出的索引出的元素替换成element对象,返回旧元素;List subList(int formIndex,int toIndex)返回索引formIndex到索引toIndex(不包含)处全部集合元素;void replaceAll(UnaryOperator operator):根据operator指定计算规则从新设置List集合的全部元素;void sort(Comparator c):根据Comparator参数对List集合的元素排序。与set集合只提供一个Iterator()方法不一样, List还提供了一个listIterator()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口。专门操做List方法。ListIterator接口在Iterator接口基础上增长了方法,boolean hasPrevious()返回该迭代器关联的集合是否还有上一个元素。Object Previous()返回该迭代器的上一个元素;void add(Object o)在指定位置插入一个元素。安全
2.ArrayList和Vector做为list类的两个典型实现,彻底支持前面介绍的List接口的所有功能,即ArrayList和Vector封装了一个动态的、容许再分配的Object[] 数组ArrayList和Vector对象使用initialCapacity参数设置数组的长度,当向ArrayList或Vector中添加超过initialCapacity会自动的增加。还能够为ArrayList和Vector类提供分配Object[] 数组void ensureCapacity(int minCapacity):将ArrayList和Vector集合中的数组增长大于或等于minCapacity。void trimToSize();调整ArrayList或Vector集合的Object[]数组长度为当前集合的长度,调用该方法减小存储的空间。Vector类具备不少的缺点通常不多用,可是ArrayList是线程不安全而Vector线程安全的,还有就是Vector提供一个Stack子类,用于模拟栈这种数据结构.Stack也是一个很早的类有不少安全的、性能差,也不多使用,咱们会使用ArrayDeque也是List的实现类,ArrayDeque及实现了list也实现了Deque接口,能够用来做为栈来使用。数据结构
3.咱们经过Arrays该工具类里面提供的asList(Object....a)方法,该方法把数组装换一个List集合,但这个List集合既不是ArrayList的实现类,也不是Vector实现类的实例,而是Arrays的内部类ArrayList的实例。Arrays.ArrayL是一个固定长度的list集合,程序只能遍历访问里面的元素,不可增长、删除该集合的元素。工具