|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2006
Città: Foligno
Messaggi: 3116
|
[JAVA] Aiuto java.util.ConcurrentModificationException
ecco il codice
public static void manutenzioneMacchineConfezionamento(String prodotto){ -----------Iterator<Macchina> i = listaMacchine.iterator(); -----------MacchinaConfezionamento macchina; -----------Macchina macchinaIf; -----------Set<String> setProdotti; -----------while(i.hasNext()){ -----------------macchinaIf = i.next(); -----------------if(macchinaIf instanceof MacchinaConfezionamento){ -----------------------macchina = (MacchinaConfezionamento)macchinaIf; -----------------------setProdotti = macchina.getSetProdotti(); -----------------------Iterator<String> s = setProdotti.iterator(); -----------------------while(s.hasNext()){ -----------------------------if(s.next().equalsIgnoreCase(prodotto)){ -----------------------------------listaManutenzione.add(macchina); -----------------------------------listaMacchine.remove(macchina); } } } } } ed ecco l' errore Exception in thread "main" java.util.ConcurrentModificationException at java.util.AbstractList$Itr.checkForComodification(Unknown Source) at java.util.AbstractList$Itr.next(Unknown Source) at preparazione.laboratorio.lez11.GestioneMacchine.manutenzioneMacchineConfezionamento(GestioneMacchine.java:176) at preparazione.laboratorio.lez11.TesterMacchine.main(TesterMacchine.java:140) sono alle prime armi con java, ne sto preparando l'esame e non riesco a sbrogliare questa situazione non capisco perchè dia errore....... |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
stai effettuando operazioni di add e remove su una lista mentre vi iteri e questo non è possibile. Le opportunità sono diverse:
-utilizzare una struttura di appoggio -utilizzare cicli for e strutture indicizzate -utilizzare LinkedList |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Dec 2006
Città: Foligno
Messaggi: 3116
|
Quote:
risolto con un ciclo for! grazie ancora |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Se iteri una collezione con un iteratore, non puoi modificare le collezione stessa.
O meglio, la puoi modificare ma solo tramite i metodi dell'iteratore stesso. Cioè se add/remove lo fai con l'iteratore, non parte nessuna eccezione di modifica concorrente. Inoltre, se "listaMacchine" è un riferimento a un'istanza che implementa List, puoi farti restituire invece che un java.util.Iterator un java.util.ListIterator che supporta maggiori capacità (attraversamento della lista in entrambe le direzioni, casomai ti servisse).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 07-09-2009 alle 17:16. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:46.