PDA

Visualizza la versione completa : [JAVA] Eccezione "ConcurrentModificationException" su ArrayList


valer_85
18-11-2005, 18:49
ciao a tutti, ho questo semplice codice di test:



ArrayList<String> s = new ArrayList<String>();
s.add("ciao");
Iterator<String> it = s.iterator();
while(it.hasNext()){
String di = it.next();
if (di.equalsIgnoreCase("ciao")){
s.remove(di);
}
}


se lo mando in esecuzione dentro un main ecco l'eccezione:



Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification( Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at Test.main(Test.java:14)

cosa significa?!? grazie :ciauz:

Brainjar
18-11-2005, 18:52
Cosa significano piuttosto quei <String> ?
Probabilmente, eliminandoli, compila.

valer_85
18-11-2005, 19:01
come cosa significano!?!?!?!?!? :dottò: significa arrayList di Stringhe! :confused:

valer_85
19-11-2005, 14:45
nessuna idea?

pepe
19-11-2005, 15:02
Perchè non usi il costrutto
for(int i =0; i<s.size(); i++)
if (s.get(i).equalsIgnoreCase("ciao")){
s.remove(i);
}
se devi gestire quel tipo di problema secondo me l'iterator è solo un fastidio.
Se invece devi utilizzare per forza l'iterator allora mi sembra che l'errore è dovuto al fatto che non hai implementato l'interfaccia Iterator e ridefinito i metodi hasNext(), next() e remove().
Comunque con il vecchio cotrutto for dovrebbe andare bene.
Ciao.

valer_85
20-11-2005, 11:34
ok, t ringrazio. provo e poi t faccio sapere, ciao :ciauz:

caimano73
21-11-2005, 11:40
Originariamente inviato da Brainjar
Cosa significano piuttosto quei <String> ?
Probabilmente, eliminandoli, compila.

è la novità dell'ultimo jdk (la 1.5). Permette di definire la tipologia di dati contenuti in un array, con una sintassi simile a quella del C++.

Loading