Java 中 Iterator.next() 的并发异常
Concurrent Exception on Iterator.next() in Java
这是移动到链表中下一个元素的代码片段。在调试时,itrPlaylist.next() 触发了 ConcurrentModificationException。我读到在迭代时不应修改列表。那么,在这种情况下,我哪里出错了?如何解决?
提前致谢。
public boolean nexxt() {
if(this.itrPlaylist.hasNext())
{
if(!bForward)
{
bForward = true;
itrPlaylist.next();
}
System.out.println("Now playing : " + itrPlaylist.next());
return true;
}
else
{
System.out.println("Reached end of " + this.getPlaylistName() + " playlist !");
}
return false;
}
itrPlaylist在哪里定义的?有点像
itrPlaylist = list.iterator();
上面的赋值应该在对列表完成所有插入之后发生。看起来您已经为 itrPlaylist 创建了一个实例变量。我想你可能正在做
list.add(value);
itrPlaylist 初始化后。
在这种情况下,代码将抛出上述异常。当迭代器已经初始化时,迭代器之外的一些其他代码修改列表时会发生这种情况。
这是移动到链表中下一个元素的代码片段。在调试时,itrPlaylist.next() 触发了 ConcurrentModificationException。我读到在迭代时不应修改列表。那么,在这种情况下,我哪里出错了?如何解决?
提前致谢。
public boolean nexxt() {
if(this.itrPlaylist.hasNext())
{
if(!bForward)
{
bForward = true;
itrPlaylist.next();
}
System.out.println("Now playing : " + itrPlaylist.next());
return true;
}
else
{
System.out.println("Reached end of " + this.getPlaylistName() + " playlist !");
}
return false;
}
itrPlaylist在哪里定义的?有点像
itrPlaylist = list.iterator();
上面的赋值应该在对列表完成所有插入之后发生。看起来您已经为 itrPlaylist 创建了一个实例变量。我想你可能正在做
list.add(value);
itrPlaylist 初始化后。
在这种情况下,代码将抛出上述异常。当迭代器已经初始化时,迭代器之外的一些其他代码修改列表时会发生这种情况。