Hallo zusammen,
ich versuche eine Schleife über eine arrayList zu iterieren, bei der sich der Inhalt der Liste verändert (Elemente der Liste werden unter einer best. Bedingung gelöscht). Da sich durch das Löschen der Elemente innerhalb der Schleife die Indizes der Elemente verändern kann ich keine for-Schleife verwenden und wollte stattdessen die iterator() Methode verwenden. Allerdings kann ich hierbei nicht mehr auf die Elemente der Liste zugreifen. Hier ist das ursprüngliche Problem (mit der for-Schleife, bei der sich die Indizes verschieben nach dem Löschen):
Hier ist die Variante mit iterator():
Hierbei erhalte ich folgende Fehlermeldung:
Exception in thread "Thread-4" java.lang.ClassCastException: java.util.ArrayList$Itr cannot be cast to demo.Agent
Hat jemand eine Idee woran es liegen könnte?
Danke
Tartaglia
ich versuche eine Schleife über eine arrayList zu iterieren, bei der sich der Inhalt der Liste verändert (Elemente der Liste werden unter einer best. Bedingung gelöscht). Da sich durch das Löschen der Elemente innerhalb der Schleife die Indizes der Elemente verändern kann ich keine for-Schleife verwenden und wollte stattdessen die iterator() Methode verwenden. Allerdings kann ich hierbei nicht mehr auf die Elemente der Liste zugreifen. Hier ist das ursprüngliche Problem (mit der for-Schleife, bei der sich die Indizes verschieben nach dem Löschen):
Code:
for(int i = 0; i < agentList.size(); i++){
Agent a = (Agent)agentList.get(i);
if(a.getAttendedGrade() > 4){
a.getNeighborhoodSchool().studentList.remove(a);
int xA1 = a.getX();
int yA1 = a.getY();
world.removeAgentAt(xA1, yA1);
agentList.remove(a);
}
}
}
Hier ist die Variante mit iterator():
Code:
while (it.hasNext()){
Agent a = (Agent)agentList.iterator();
if(a.getAttendedGrade() > 4 ){
a.getNeighborhoodSchool().studentList.remove(a);
int xA1 = a.getX();
int yA1 = a.getY();
world.removeAgentAt(xA1, yA1);
agentList.remove(a);
}
}
}
Hierbei erhalte ich folgende Fehlermeldung:
Exception in thread "Thread-4" java.lang.ClassCastException: java.util.ArrayList$Itr cannot be cast to demo.Agent
Hat jemand eine Idee woran es liegen könnte?
Danke
Tartaglia