您的位置:首页 > 编程语言 > Java开发

ListIterator使用时的ConcurrentModificationException异常问题

2017-07-29 17:40 316 查看
写作业时用到了迭代器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()



遍历集合时,注意可能因指针不在集合的头或尾而"错过"某些数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐