Как добавить элемент в список во время итерации в java?

Допустим, у меня есть список типа:

List<String> list = new ArrayList<>();
list.add("a");
list.add("h");
list.add("f");
list.add("s");

Во время итерации по этому списку я хочу добавить элемент в конец списка. Но я не хочу выполнять итерацию по вновь добавленным элементам, то есть я хочу выполнять итерацию до начального размера списка.

for (String s : list)
     /* Here I want to add new element if needed while iterating */

Может ли кто-нибудь подсказать мне, как я могу это сделать?

Итерация по копии списка и добавление новых элементов в исходный список.

for (String s : new ArrayList(list))     
{
    list.add("u");
}

См. https://stackoverflow.com/questions/3410035/how-to-make-a-copy-of-arraylist-object-which-is-type-of-list

Комментарии (0)

Просто выполняйте итерацию по старинке, потому что вам нужна явная обработка индексов:

List myList = ...
...
int length = myList.size();
for(int i = 0; i < length; i++) {
   String s = myList.get(i);
   // add items here, if you want to
}
Комментарии (3)

Вы можете выполнять итерации над копией (клоном) вашего исходного списка:

List copy = new ArrayList(list);
for (String s : copy) {
    // And if you have to add an element to the list, add it to the original one:
    list.add("some element");
}

Обратите внимание, что даже невозможно добавить новый элемент в список во время итерации по нему, потому что это приведет к ConcurrentModificationException.

Комментарии (0)