В чем затык. Я пытался делать задачу через итераторы и немного сломал мозг. Предположим я создаю листитератор и иду с конца.
ListIterator<String> listIterator = strings.listIterator(strings.size());
int counter = 0;
while (listIterator.hasPrevious() && counter < 13) {
            aStringToAdd = listIterator.previous();
            System.out.println(aStringToAdd);
            listIterator.remove();
            System.out.println("after removal " + strings);
            //тут должен быть код для добавления
}
Он отлично идет с удалением.. но когда я пытаюсь добавить еще 1 итератор с начала (чтобы добавлять строчку), он выкидывает исключение. А ведь по заданию "удали строчку И добавь". А итератор-то текущий... с конца. где //тут должен быть код для добавления я добавляю цикл с кодом типа:
while(iterator.hasNext()){
iterator.add(aStringToAdd );
}
(за точность кода не ручаюсь, но я думаю, вопрос понятен) и выскакивает эксепшен, хотя 2 итератора "порознь" работают ок. То же исключение возникает, когда я хочу напрямую в коллекцию, минуя второй итератор, добавить элемент, а-ля
list.add(0, aStringToAdd);
(ну тут уже логично вполне) Вполне возможно, я не так как нужно понимаю итераторы, но в моем представлении чтобы что-то делать с коллекцией (модицифировать ее) и одновременно по ней "бегать", итераторы - вполне себе вариант. Только удалять и добавлять нужно именно через них. Возможно (и наверняка) в моей голове что-то перемкнуло и я не очень понимаю КОГДА использовать итераторы. Но если я верно понял интернет-источники, ошибка может выскочить либо в ситуации когда: (где под капотом используются итераторы)
for (String elem : list) {
    if (elem.equals("a")) {
        list.remove(elem);
    }
}
либо в варианте:
while (it.hasNext()) {
Integer value = it.next();
if (value.equals(3))
 list.remove(value);
 }
и в обоих случаях нужно использовать iter.remove В решении же с задачи ошибки и не возникает, ибо мы просто запустили обычный цикл:
for (int i = 0; i < 13; i++) {
    String string = strings.remove(4);
    strings.add(0, string);
}
и просто последовательно добавили+удалили элементы 13 раз... Так как все-таки с помощью итераторов осуществить мою задумку ? Или смотреть в сторону хитрых коллекций, что позволяют изменять содержимое во время траверса ? Или не ломать себе мозг и "забить" ? :)))