wol*_*lfd 3 java iterator linked-list list
所以我在我的代码中有这个循环,需要两个单独工作的迭代器.但是,当它尝试使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
List除非您创建允许它的实现,否则在迭代它们时,您无法将项添加到大多数标准实现中!
ArrayList但是,不会看到javadoc.大多数*(可能全部)Java Collections Frameworks List实现也没有.
一个解决方案是创建一个新列表,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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10201 次 |
| 最近记录: |