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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |