一、概述

1.List被称为有序集合(也称为序列),用户可以十分精准的控制列表中每个元素的插入位置,用户可以通过整数索引访问元素并搜索元素列表

2..与set集合不同,列表中通常允许重复的数据

二、List集合的特点

1.有序:存储和取出的元素顺序一致

2.可重复:存储的元素可以重复

常用方法在前面有这里就不写了,有兴趣的可以翻翻看

三、List集合存储学生对象案例

代码演示:

public class CollectionDemo01 {
    public static void main(String[] args) {
        //创建List集合对象
        List<Student>list=new ArrayList<Student>();
        //创建学生对象
        Student s1=new Student("张三",14);
        Student s2=new Student("李四",15);
        Student s3=new Student("王五",16);
        list.add(s1);
        list.add(s2);
        list.add(s3);
        //遍历两种方式
        //方式一迭代器
        Iterator<Student> it=list.iterator();
        while(it.hasNext()){
            Student s=it.next();
            System.out.println(s.getName()+s.getAge());
        }
        System.out.println("--------------------------------------");
        //方式二for循环
        for (int i=0;i<list.size();i++){
            Student s4=list.get(i);
            System.out.println(s4.getName()+s4.getAge());
        }

    }
}

四、并发修改异常

ConcurrentModificationException

产生的原因:

迭代器在遍历的过程中,通过集合对象修改了集合中元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一致

解决方案:

使用for循环遍历,然后用集合对象做对应的操作即可

五、列表迭代器ListIterator

1.通过List集合的listIterator()方法得到,所以说他是LIst集合的特有迭代器

2.用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置

常用方法:

E next():返回迭代中的下一个元素

Boolean hasNext():如果迭代具有更多元素,则返回true

E previous():返回列表中的上一个元素

Boolean hasPrevious():如果此列表迭代器在相反的方向遍历列表时具有更多元素,则返回true

void add(E e):将指定元素插入列表