Possible Duplicates:
Java: Efficient Equivalent to Removing while Iterating a Collection
Removing items from a collection in java while iterating over itCome posso scorrere su un oggetto mentre lo si modifica in Java?
sto cercando di collegare attraverso HashMap
:
Map<String, Integer> group0 = new HashMap<String, Integer>();
... ed estrarre ogni elemento in group0
. Questo è il mio approccio:
// 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);
}
}
Il problema qui è che ogni chiamata a assign()
rimuoverà gli elementi da group0
, modificando così la sua dimensione, causando in tal modo il seguente errore:
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)
Allora ... come posso scorrere gli elementi in group0
mentre cambia dinamicamente?
Creare una copia della mappa group0 e rimuovere elementi dalla copia durante il looping del gruppo0? – sarahTheButterFly
@sarah ... buon punto. Ci proverò. – Hristo
@sarah ...copiare su group0 su un clone HashMap mi dà il problema che quando rimuovo dal gruppo0, rimuovo anche da clone. Come posso superarlo? Come posso creare una copia indipendente di group0? – Hristo