Hobbes
28-11-2008, 15:50
Hi allerseits,
ich habe ein Problem mit einer ArrayList in Java. Diese ArrayList ist mit Werten gefüllt, die ich in einer for-Schleife durchgehe. Wenn in der Schleife eine bestimmte Bedingung erfüllt ist, soll am Ende der ArrayList ein neues Element hinzugefügt werden, das später natürlich auch in der Schleife abgearbeitet werden soll.
Gibt es eine Möglichkeit, das zu realisieren?
Lang Rede, kurzer Sinn: hier mal ein kleines Beispiel:
import java.util.ArrayList;
public class MinimalClass {
public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList();
al.add(1);
al.add(2);
al.add(3);
for (int i : al) {
System.out.println(i);
if (i == 2) {
al.add(4);
}
}
}
}
Das Hinzufügen funktioniert aber nicht. Es kommt folgende Exception:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification( AbstractList.java:449)
at java.util.AbstractList$Itr.next(AbstractList.java: 420)
at MinimalClass.main(MinimalClass.java:9)
[b]EDIT[b]
Problem gelöst
Hier die Lösung:
import java.util.*;
public class MinimalClass {
public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList();
al.add(1);
al.add(2);
al.add(3);
int iAnz = al.size();
for (int i=0; i<iAnz; i++) {
int iOut = al.get(i);
System.out.println(iOut);
if (iOut == 2) {
al.add(4);
iAnz++;
}
}
}
}
ich habe ein Problem mit einer ArrayList in Java. Diese ArrayList ist mit Werten gefüllt, die ich in einer for-Schleife durchgehe. Wenn in der Schleife eine bestimmte Bedingung erfüllt ist, soll am Ende der ArrayList ein neues Element hinzugefügt werden, das später natürlich auch in der Schleife abgearbeitet werden soll.
Gibt es eine Möglichkeit, das zu realisieren?
Lang Rede, kurzer Sinn: hier mal ein kleines Beispiel:
import java.util.ArrayList;
public class MinimalClass {
public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList();
al.add(1);
al.add(2);
al.add(3);
for (int i : al) {
System.out.println(i);
if (i == 2) {
al.add(4);
}
}
}
}
Das Hinzufügen funktioniert aber nicht. Es kommt folgende Exception:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification( AbstractList.java:449)
at java.util.AbstractList$Itr.next(AbstractList.java: 420)
at MinimalClass.main(MinimalClass.java:9)
[b]EDIT[b]
Problem gelöst
Hier die Lösung:
import java.util.*;
public class MinimalClass {
public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList();
al.add(1);
al.add(2);
al.add(3);
int iAnz = al.size();
for (int i=0; i<iAnz; i++) {
int iOut = al.get(i);
System.out.println(iOut);
if (iOut == 2) {
al.add(4);
iAnz++;
}
}
}
}