Ho letto un articolo riguardante la rimozione di elementi provenienti da collezioni da this linkcollezioni sopprimere metodo non dà Modifica concomitante Eccezione
Come per la mia comprensione metodo iterator remove impedisce eccezione modifica simultanea quindi rimuovere il metodo di Collection.But quando provo per eseguire il Codde di seguito non sono in grado di ottenere concurrentmoficationexception
List dayList= new ArrayList();
dayList.add("Sunday");
dayList.add("Monday");
dayList.add("Tuesday");
dayList.add("Wednesday");
dayList.remove("Tuesday");
Iterator itr=dayList.iterator();
while(itr.hasNext())
{
Object testList=itr.next();
if(testList.equals("Monday"))
{
dayList.remove(testList);
}
}
System.out.println(dayList);
}
- Come per javadoc il ConcurrentModicationException viene generata quando cerchiamo di fare alcuna modifica durante iteartion.I sto usando colle ctions rimuove il metodo, ma ancora non ci sono eccezioni. Ma se commento la riga dayList.remove ("Tuesday");, viene generata un'eccezione.
Qualcuno può spiegare cosa sta succedendo dietro la scena in questo codice?
La descrizione non è esatta. Ottieni l'eccezione solo se elimini entrambe le righe. – EJP
Consultare la documentazione ConcurrentModificationException: http://docs.oracle.com/javase/7/docs/api/java/util/ConcurrentModificationException.html –
@EJP Anche se mantiene la riga 'iterator.remove()' commentata , riceverà comunque l'eccezione chiamando di nuovo 'iterator.next()'. –