编辑
无论使用什么方式对 List 进行遍历,都不能直接对 List<E>变量进行直接修改操作,
比如:
List<String> strList = new ArrayList<String>();
strList.add("john");
strList.add("mark");
strList.add("alen");
strList.add("jason"); for(String strElem:strList){
if(strElem.equals("john")){
strList.add("Davien");
}
}
上面的代码想在“john”后面添加“Davien”,但是很不幸,会抛出
java.util.ConcurrentModificationException 异常,就是因为对在循环中对
strList 变量进行直接修改。Iterator 可以提供容器类的统一遍历方式,并且可以
在遍历中使用 remove 方法删除元素,但是任然不能解决遍历时修改 List 的需求。
ListIterator 就是在 Iterator 的基础上添加的 prev 系列方法,可以实现反向操
作,最重要的是添加了 add 和 set 方法,可以实现遍历 List 的时候同时进行添加,
修改的操作。
public interface ListIterator<E> extends Iterator<E>
系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的
当前位置。
List 边遍历,边修改示例:
public static void sop(Object obj){
System.out.println(obj);
}
public static void main(String[] args){