Java – double iterator loop

So I have this loop in my code that requires two separate iterators But when it tries to use rbitterer When next(), Java will throw concurrentmodificationexception How can I prevent this from happening?

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);
    }
}

Solution

Unless you create an implementation that allows it, you cannot add items to most standard implementations of list when iterating over them!

However, ArrayList will not see Javadoc Most * (possibly all) Java Collections Framework list implementations will not

The solution is to create a new list temp before the iteration, add the elements to temp during the iteration, and then add all the elements in temp to the first one

Editor: use addall (Temp), thanks @ Michael Easter

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

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

roads.addAll(temp);
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>