Possible Duplicates:
Java: Efficient Equivalent to Removing while Iterating a Collection
Removing items from a collection in java while iterating over itWie kann ich über ein Objekt iterieren, während ich es in Java ändere?
Ich versuche, eine Schleife durch HashMap
:
Map<String, Integer> group0 = new HashMap<String, Integer>();
... und in group0
jedes Element zu extrahieren. Das ist mein Ansatz:
// iterate through all Members in group 0 that have not been assigned yet
for (Map.Entry<String, Integer> entry : group0.entrySet()) {
// determine where to assign 'entry'
iEntryGroup = hasBeenAccusedByGroup(entry.getKey());
if (iEntryGroup == 1) {
assign(entry.getKey(), entry.getValue(), 2);
} else {
assign(entry.getKey(), entry.getValue(), 1);
}
}
Das Problem hierbei ist, dass jeder Aufruf assign()
Elemente aus group0
zu entfernen, damit seine Größe ändern, wodurch den folgenden Fehler:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
at java.util.HashMap$EntryIterator.next(HashMap.java:834)
at java.util.HashMap$EntryIterator.next(HashMap.java:832)
at liarliar$Bipartite.bipartition(liarliar.java:463)
at liarliar$Bipartite.readFile(liarliar.java:216)
at liarliar.main(liarliar.java:483)
So ... wie kann ich die Elemente in group0
durchlaufen, während es sich dynamisch ändert?
Erstellen Sie eine Kopie der Karte group0 und entfernen Sie Elemente aus der Kopie, während Sie die Gruppe0 durchlaufen? – sarahTheButterFly
@sarah ... guter Punkt. Ich werde es versuchen. – Hristo
@sarah ...Kopieren über Group0 auf einen Klon HashMap gibt mir das Problem, dass, wenn ich aus Group0 entferne, ich auch aus Klon entfernen. Wie kann ich das überwinden? Wie erstelle ich eine unabhängige Kopie von group0? – Hristo