Изменение Java ArrayList во время итерации по нему

Я хочу сделать что-то похожее на this

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

РЕДАКТИРОВАТЬ: Проблема в том, что мне нужны объекты в итераторе, измененные повторяющимся кодом. Я не думаю, что клонирование arrayylist сработает ...

EDIT2: Вот урезанная версия моего кода.

public class Map {
     // a bunch of code
     private ArrayList robots;

     public Iterator getRobots() {
          return robots.iterator();
     }

     public void buildNewRobot(params) {
          if(bunchOfConditions)
                robots.add(new Robot(otherParams);
     }

     // a bunch more code
}

А вот карта, используемая в другом классе.

for(Iterator it = map.iterator(); it.hasNext();){
   Robot r = it.next();
   // a bunch of stuff here
   // some of this code modifies Robot r 

   if(condition)
       map.buildNewRobot(params);
}

5
задан Community 23 May 2017 в 12:31
поделиться