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集合,程序只能遍历访问里面的元素,不可增加、删除该集合的元素。