Java для каждого цикла работает

Я работал над определенной задачей,когда случайно сделал что-то не так по мне но код выполнен и дал правильный результат. Я был немного удивлен и имел в виду, как все это работает для каждого цикла. Пример (пример программы),

public static void main( String[] args )
{
    String myInput = "hello , hi , how are you ";
    String[] splitted = myInput.split(",");
    List mylist = new ArrayList();
    for (String output : splitted) 
    {
        mylist.add(output);
    }


    for (String output : mylist) 
    {
        System.out.println(output);
        mylist = new ArrayList(); //It worked 
        mylist.add(output);
    }

    for (String output : splitted) 
    {
        mylist.add(output);
    }

    for (String output : mylist) 
    {
        System.out.println(output);             
        mylist.add(output); // After this line it threw exception java.util.ConcurrentModificationException
    }

}

Мне было интересно узнать, и во время поиска я нашел еще один пост, в котором говорилось, что мы можем удалить элементы из списка, если мы используем итераторный подход, поэтому я попытался,

for (String output : splitted) 
{
    mylist.add(output);
}
for (Iterator iterator2 = mylist.iterator(); iterator2.hasNext();)
{
    String string = (String) iterator2.next();
    System.out.println(string);
    iterator2.remove(); //It worked but if I used the same thing to remove element from original list it threw exception.
}

Теперь я просто хочу знать, что происходит за каждым для каждого цикла, указанного выше.

Я хочу знать технический аспект, я знаю, что не могу изменить коллекцию для каждого цикла, но в некоторых случаях, указанных выше, это сработало, почему?

Ответы на вопрос(5)

Ваш ответ на вопрос