Я читал об исключении одновременной модификации и заметил, что в случае удаления элемента используется расширенное исключение одновременной модификации для бросков цикла, тогда как для обычного цикла это не так.
Может кто-нибудь, пожалуйста, помогите мне понять, почему это происходит, ниже код
import java.util.ArrayList;
import java.util.List;
public class ConcurrentModificationExceptionExample {
public static void main(String args[]) {
List<String> myList = new ArrayList<String>();
myList.add("1");
myList.add("2");
myList.add("3");
myList.add("4");
myList.add("5");
// enhanced for loop
/* for(String s:myList){
if(s.equals("1")){
myList.remove("1");
}
}*/
// normal for loop
for(int i = 0; i<myList.size(); i++){
if(myList.get(i).equals("1")){
myList.remove("1");
}
}
System.out.println(myList);
}
}
для тестирования // улучшено для цикла, можно не комментировать