(1)定义:List是Collection的子接口
特点:有序(存储顺序和取出顺序一致),可重复。
(2)属性:-5个功能-1特有遍历-1列表迭代器
1)List的特有功能:5个
1-添加功能:void add(int index, Objext element)--在指定位置添加元素//可以<=数组索引最大值+1
2-删除功能:Objext remove(int index)--根据索引删除元素,返回被删除的元素
3-获取功能:Object get(int index)--获取指定位置的元素
4-修改功能:Object set(int index,Objext element)--根据索引修改元素,返回被修改的元素
5-迭代器功能:ListIterator listIterator()--List集合特有的列表迭代器
2)List集合的特有遍历功能
1-由size()和get()结合。
2-代码演示
//创建集合对象
List list = new ArrayList();
//创建并添加元素
list.add("hello");
list.add("world");
list.add("java");
//遍历集合
Iterator it = list.iterator();
while(it.hasNext()) {
String s =(String) it.next();
System.out.println(s);
}
System.out.println("----size()和get()-----");
for(int x=0; x<list.size(); x++) {
String s =(String) list.get(x);
System.out.println(s);
}
3)列表迭代器的特有功能;(了解)
返回类型ListIterator是一个接口,该接口继承了Iterator,
因此可以调用hasNext(),next()遍历
可以逆向遍历,但是要先正向遍历,所以无意义,基本不使用:
Object previous()/boolean hasprevious()
(3)注意:1个异常
并发修改异常:ConcurrentModificationException
当方法检测到对象的并发修改,但不允许这种修改时,抛出异常
1-出现的现象
迭代器遍历集合,集合修改集合元素
2-原因
迭代器是依赖于集合的,而集合的改变迭代器并不知道。
3-解决方案
1.迭代器遍历,迭代器修改(ListIterator)
元素添加在刚才迭代的位置
2.集合遍历,集合修改(size()和get())
元素添加在集合的末尾
集合-List2