List集合:

有序的collection(也称序列),此接口的用户可以对列表中的每个元素的插入位置进行精准的控制。
用户可以根据元素的索引(在列表中的位置)访问元素,并搜索列表中的元素。
与set不同,列表通常允许重复的元素。
特点:
元素有序,可重复

一、List集合的子类及其特点:

ArrayList:
    底层数据结构是数组,查询快,增删慢,线程不安全,效率高。
Vector:
    底层数据结构是数组,查询快,增删慢,线程安全,效率低。
LinkedList:
    底层数据结构是链表,查询慢,增删快,线程不安全,效率高。

二、List集合的特有功能:

1、添加功能:
    void add(int index,E element):在指定位置添加元素
2、获取功能:
    E get(int index):获取指定位置的元素
3、列表迭代器:
    ListIterator<E> listIterator():List特有迭代器
4、删除功能:
    E remove(int index):根据索引删除元素,返回被删除的元素
5、修改功能:
    E set(int index,E element):根据索引修改元素,返回被修改的元素

集合遍历:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

class Student1{
	String name;
	int age;
	public Student1(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
}
public class ListDemo {
	public static void main(String[] args) {
		List l =new ArrayList();
		Student1 s1 = new Student1("小A",18);
		Student1 s2 = new Student1("小B",18);
		Student1 s3 = new Student1("小C",19);
		Student1 s4 = new Student1("小D",19);
		l.add(s1);
		l.add(s2);
		l.add(s3);
		l.add(s4);
		//迭代器遍历
		Iterator i = l.iterator();
		while(i.hasNext()) {
			Student1 s = (Student1) i.next();
			System.out.println(s.name+"----"+s.age);
		}
		System.out.println("---------");
		//for循环size(),get()遍历
		for(int k = 0;k < l.size();k ++) {
			Student1 str = (Student1) l.get(k);
			System.out.println(str.name+"----"+str.age);
		}
	}
}

ListIterator的特有功能:

1、添加功能:
   (1)迭代器迭代元素,迭代器修改元素,元素跟在迭代的元素后
   (2)集合遍历元素,集合修改元素(for)元素添加到最后
2、逆向遍历:前提是要先正向遍历

ListIterator lit = l.listIterator();
//正向遍历
Iterator i = l.iterator();
    while(i.hasNext()) {
        String s = (String) i.next();
        System.out.println(s);
    }
//逆向遍历
while(lit.hasprevious()){
    String s = (String)lit.previous();
    System.out.println(s);
    }

三、LinkList特有的功能:

1、添加功能:
        public void addFirst(E e):把指定元素插入到表头
        public void addLast(E e):把指定元素插入到结尾
2、获取功能:
        public E getFirst():返回此列表的第一个元素
        public E getLast():返回此列表的最后一个元素
3、删除功能:
        public E removeFirst():移除并返回列表的第一个元素
        public E removeLast():移除并返回列表的最后一个元素