微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 中 Iterator.next() 上的并发异常

如何解决Java 中 Iterator.next() 上的并发异常

这是一个代码片段,用于移动到链表中的下一个元素。在调试时,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 初始化之后。

在这种情况下,代码将抛出上述异常。当迭代器已经初始化时,迭代器之外的一些其他代码修改列表时会发生这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。