java ListIterator接口

并发修改异常产生的原因及解决方案

* A:案例演示

* 需求:我有一个集合,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。

List list = new ArrayList();

list.add("a");

list.add("b");

list.add("world");

list.add("d");

list.add("e");

/*Iterator it = list.iterator(); //边遍历, 边增加元素 -------- 是程序不允许的操作

while(it.hasNext()) {

String str = (String)it.next();

if(str.equals("world")) {

list.add("javaee"); //这里会抛出ConcurrentModificationException并发修改异常

}

}*/

* B:ConcurrentModificationException出现

* 迭代器遍历,集合修改集合

* C:解决方案

* a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add) //listiterator特有的方法解决这个问题

* b:集合遍历元素,集合修改元素

解决办法:

ListIterator lit = list.listIterator(); //如果想在遍历的过程中添加元素,可以用ListIterator中的add方法

while(lit.hasNext()) {

String str = (String)lit.next();

if(str.equals("world")) {

lit.add("javaee");

//list.add("javaee");

}

}

ListIterator

* boolean hasNext()是否有下一个

* boolean hasPrevious()是否有前一个

* Object next()返回下一个元素

* Object previous();返回上一个元素