ListIterator使用时的ConcurrentModificationException异常问题

来源:互联网 发布:淘宝直播在哪 编辑:程序博客网 时间:2024/06/06 00:18

写作业时用到了迭代器ListIterator,主要代码如下,使用了

.hasNext()
.next()
.hasPrevious()
.previous()

ListIterator<Worker> it = workerList.listIterator();int index = 0;while(it.hasNext()){Worker w = it.next() ; if("li4".equals(w.getName())){//it.add( new Worker("zhao6",24,3300));index = workerList.indexOf(w);System.out.println(index);//break;}}workerList.add(index, new Worker("zhao6",24,3300));System.out.println(workerList.toString());//ListIterator<Worker> it1 = workerList.listIterator();while(it.hasPrevious()){Worker w = it.previous() ; if("zhang3".equals(w.getName())){it.remove();//break;}System.out.println(workerList.toString());}


报错Exception in thread "main" java.util.ConcurrentModificationException,检查后发现,是下面这句代码的使用使程序抛出了异常

workerList.add(index, new Worker("zhao6",24,3300));

ListIterator   it  和集合  workList 同时操作一个资源,语句下方还有

while(it.hasPrevious())
即ListIterator   it 未完成对集合的操作,此时就会抛出异常


-----------------------------------------------------------------------------------------------------

注意:使用ListIterator的

.hasNext()
.next()
.hasPrevious()
.previous()
遍历集合时,注意可能因指针不在集合的头或尾而"错过"某些数据

阅读全文
1 0
原创粉丝点击