加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Double Iterator循环

发布时间:2020-12-15 08:42:50 所属栏目:Java 来源:网络整理
导读:所以我在我的代码中有这个循环,需要两个单独工作的迭代器.但是,当它尝试使用rbIterator.next()时,java会抛出ConcurrentModificationException.我如何阻止这种情况发生? 谢谢 IteratorRoad raIterator = roads.listIterator(0); //I also tried .iterator(),
所以我在我的代码中有这个循环,需要两个单独工作的迭代器.但是,当它尝试使用rbIterator.next()时,java会抛出ConcurrentModificationException.我如何阻止这种情况发生?
谢谢

Iterator<Road> raIterator = roads.listIterator(0); //I also tried .iterator(),with no avail
while(raIterator.hasNext()){
    Road ra = raIterator.next();
    Iterator<Road> rbIterator = roads.listIterator(0);
    while(rbIterator.hasNext()){
        Road rb = rbIterator.next();
        //snipped code that adds a road to the list
        roads.add(xyz);
    }
}

解决方法

除非您创建允许它的实现,否则在迭代它们时不能将项添加到List的大多数标准实现中!

但是,ArrayList不会看到javadoc.大多数*(可能全部)Java Collections框架列表实现也不会.

解决方案是在迭代之前创建一个新的列表temp,在迭代时将元素添加到temp,然后将temp中的所有元素添加到第一个.

编辑:使用addAll(temp),感谢@Michael Easter

List<Road> temp = new ArrayList<Road>();

for(Road ra : roads){
    for (Road rb : roads){
        temp.add(xyz);
    }
}

roads.addAll(temp);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读