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