# Über ArrayList iterieren, während sich diese verändert



## xray200 (15. Aug 2009)

Hallo zusammen,

wie iteriere ich denn am einfachsten über eine ArrayList, die sich während der Iterationen verändern kann, d.h. es können neue Objekte hinzukommen.

Mache ich das einfach mit dem Iterator und das läuft so lange, bis er alle Elemente, auch die neu hinzugekommenen am Ende der Liste bearbeitet hat?


```
while (ArraylistIterator.hasNext())
{
element=ArraylistIterator.next()
//arbeiten und ggf. neues Element
Arraylist.add(neu);
}
```

Geht das?


----------



## Schandro (15. Aug 2009)

sobald du die ArrayList bearbeitet hast, wird der nächste Aufruf des Iterators eine Exception schmeissen => geht nicht

mach es mt ner Zählvaraible in der schleife:

```
for(int i=0;i<myList.size();++i){
   Blubb bla = myList.get(i);
   // ...
}
```

PS: Variablennamen sollte man im camelCase schreiben, d.h. erster Buchstabe klein


----------



## xray200 (15. Aug 2009)

D.h. die size()-Angabe wird nach jedem Durchlauf angepasst, wenn ich neue Elemente hinzufüge.
Wenn ich also etwas lösche geht es nicht so einfach, richtig?


----------



## Manziel (15. Aug 2009)

Ich würde sowas am einfachsten folgendermaßen machen:

```
ArrayList toAdd = new ArrayList();

while (ArraylistIterator.hasNext())
{
element=ArraylistIterator.next()
//arbeiten und ggf. neues Element
toAdd.add(neu);
}

ArrayList.addAll(toAdd);
```
analog geht das auch mit removeAll.


----------

