特点:
a) 有序(存储和取出的元素顺序一致),可重复
b) 特有功能
1. 添加功能
void add(int index,Object element)在指定位置添加元素(原索引处的元素后延)
2. 获取功能
Object get(int index)获取指定位置的元素
3. 列表迭代器
(1). ListIterator listIterator() List集合特有的迭代器
(2). Iterator迭代器的子类,所以其可以用Iterator中的boolean hasNext()、Object next()方法
(3). 特有的方法:
a) Object previous ()返回此处位置的前一个的元素,并移动到前一个位置。
b) boolean hasPrevious()判断此处的前一个位置是否有元素
c) 逆向遍历必须先正向遍历使指针指到后面位置才能使用(使用意义不大)
4. 迭代器遍历元素时不能直接通过集合修改元素,怎么办?
a) 迭代器修改元素
1. List迭代器有修改方法,Collection中的迭代器没有
2. 通过迭代器中add(object obj)方法添加,跟在刚才迭代元素后面
b) 通过集合遍历元素,并用集合修改元素(for循环遍历):通过集合中add(object obj)方法添加,跟在集合最后面
5. 迭代器遍历实例实例在下面给出
(1). 删除功能
Object remove(int index)根据索引删除指定的元素,并返回删除的元素
(2). 修改功能、
Object set(int index,Object element)根据索引修改元素,返回被修改的元素
(3). 数组转成集合
① public static List asList(T… a),返回类型为List类型
② a为集合,此处的… 代表可变参数,也就是a的数组元素个数可变
③ 此方法是Arrays类中的静态方法
④ 数组转变为集合,实质还是数组需要保证长度不变,所以不支持增删集合元素,可以修改元素
c) List子类的特点:
1. ArrayList:
(1). 底层数据结构是数组,查询快、增删慢
(2). 线程不安全,效率高
2. Vector:
(1). 底层数据结构是数组,查询快,增删慢
(2). 线程安全,效率底
3. LinkedList:
(1). 底层数据结构是链表,查询慢,增删快
(2) 线程不安全,效率高