I want to do something similar to this
However, I do NOT want the added elements to be iterated over. Basically I have an underlying arraylist, and I return an iterator over the arraylist. While iterating using that iterator, I want to add elements to the original arraylist. How do I do this?
EDIT: The problem with this is that I need the objects in the iterator modified by the iterating code. I don't think that cloning the arraylist will work...
EDIT2: Here is a stripped-down version of my code.
public class Map {
     // a bunch of code
     private ArrayList<Robot> robots;
     public Iterator<Robot> getRobots() {
          return robots.iterator();
     }
     public void buildNewRobot(params) {
          if(bunchOfConditions)
                robots.add(new Robot(otherParams);
     }
     // a bunch more code
}
And here is the map being used in another class.
for(Iterator<Robot> 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);
}
 
     
     
    