I\'ve run into this while writing a Traveling Salesman program. For an inner loop, I tried a
for(Point x:ArrayList) { // modify the iterator }
The first example uses an iterator, the second does not. It is the iterator that checks for concurrent modification.