Я столкнулся с этим во время написания программы Traveling Salesman. Для внутреннего цикла я попробовал
for(Point x:ArrayList<Point>) {
// modify the iterator
}
но при добавлении другой точки в этот список вызывается ConcurrentModicationException
.
Однако, когда я изменил цикл на
for(int x=0; x<ArrayList<Point>.size(); x++) {
// modify the array
}
цикл работал нормально, не вызывая исключения.
Как для циклов for, так почему вы выбрали исключение, а другое - нет?