1.3.1概述
有序的Collection序列,此接口的用户可以对此列表中的每个元素的插入位置进行精确的控制,
用户可以通过元素的整数索引访问元素,并搜索列表中的元素,与set不同,通常允许重复的元素
特点:元素有序且可重复,集合中每个元素都有其对应的顺序索引
1.3.2List常用方法
List是Collection接口的子接口,Collection接口中的方法就不再赘述
void add(int index,Object element):将元素怒element添加到集合的指定index索引处
boolean addAll(int index,Collenction c):将集合A所包含的所有元素添加到集合B中指定index索引处
Object get(int index):获取指定集合索引处的元素
int indexOf(Object o):返回该对象在集合中第一次出现的索引
int lastIndexOf(Object o):返回该对象在集合中最后一次出现的索引
Object remove(int index):删除该索引元素并返回该删除的元素
Object set(int index,Object element):将index索引处的元素替换为element对象,返回被替换的旧元素
List subList(int fromIndex,int toIndex):返回从索引fromIndex到索引toIndex处的所有集合元素组成的子集合[fromIndex,toIndex)
void replaceAll(UnaryOperator operator):根据只当的计算规则重新设置list集合的所有元素
void sort(Comparator c):根据Comparator参数对List集合元素进行排序
set方法虽然可以改变指定索引处的值,但是不能扩容,即不可改变原有集合的长度
UnaryOperator也是一个函数式接口,因此replaceAll方法可以使用lambda表达式来作为参数
1.3.3ListIterator接口
List还额外提供了一个listIterator()方法,该方法返回一个ListIterator对象,LIstIterator接口继承自Iterator接口
常用方法:
boolean hasPrevious();//返回该迭代器关联的集合是否还有上一个元素
Object previous();//返回该迭代器的上一个元素
void add(Object o);//指定位置插入一个元素
ListIterator和Iterator对比:
-
ListIterator不仅有向后迭代(Iterator的特性)的功能,还增加了向前迭代的功能
-
ListIterator不仅支持删除List集合,还添加了增加元素的功能(
add()
)
1.3.4固定长度的List
在数组中有一个Arrays工具类,该工具类中提供了asList(Object…a)方法,该方法可以将一个数组或多个数组转换为一个List集合
这个List集合既不是ArrayList实现类的实例,也不是Vector实现类的实例,而是Arrays内部类的实例
Object[] objects = list.toArray();
List<Object> objects1 = Arrays.asList(objects);
objects1.remove("白居易"); //UnsupportedOperationException
这个List是固定长度,不允许添加和删除,,否则会引发异常UnsupportedOperationException