列表迭代器 ListIterator
package com.Test01; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; /* ConcurrentModificationException 当不允许这样的修改时,可以通过检测到对象的并发修改的方法来抛出此异常。 */ public class ListDemo { public static void main(String[] args) { //创建集合对象 List<String> list = new ArrayList<String>(); //添加元素 list.add("hello"); list.add("world"); list.add("java"); // 遍历集合 /* Iterator<String> it = list.iterator(); while (it.hasNext()) { String s = it.next(); if(s.equals("world")) { list.add("javase"); } } */ /* for(int i = 0;i<list.size();i++) { String s = list.get(i); if(s.equals("world")) { list.add("javaee"); } } System.out.println(list); */ ListIterator<String> lit = list.listIterator(); while (lit.hasNext()) { String s = lit.next(); System.out.println(s); } System.out.println("-------------"); while (lit.hasPrevious()) { String s = lit.previous(); System.out.println(s); } } }
运行结果如下:
hello
world
java
-------------
java
world
hello
ListIterator<String> lit = list.listIterator();
while(lit.hasNext()) {
String s = lit.next();
if(s.equals(“world”)) {
lit.add(“javaee”);
}
}
System.out.println(list);
使用列表迭代器的add方法不会发生并发异常,因为底层将 实际修改次数赋值给了预期修改次数