Ответ 1
Нет ничего плохого в идее изменения элемента внутри списка во время его перемещения (не изменяйте сам список, который не рекомендуется), но он может быть лучше выражен следующим образом:
for (int i = 0; i < letters.size(); i++) {
letters.set(i, "D");
}
В конце весь список будет иметь букву "D"
в качестве ее содержимого. Не рекомендуется использовать расширенный цикл for
в этом случае, вы не используете переменную итерации ни для чего, кроме того, вы не можете изменять содержимое списка с помощью переменной итерации.
Обратите внимание, что приведенный выше фрагмент не изменяет структуру списка - это означает: никакие элементы не добавляются и не удаляются, а размер списков остается постоянным. Просто замена одного элемента на другой не считается структурной модификацией. Здесь ссылка к документации, цитируемой @ZouZou в комментариях, говорится, что:
Структурная модификация - это любая операция, которая добавляет или удаляет один или несколько элементов или явно изменяет размер массива поддержки; просто установка значения элемента не является структурной модификацией