Encontré esta afirmación si un hilo modifica una colección directamente mientras itera sobre la colección con un iterador de fail-fast, el iterador aplicará esta excepción. al http://download.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html.Conceptos de modificación del elemento en la colección durante la iteración?
me encontré con la modificación concurrente incluso arrojado por debajo de código
List<Employee> lista= new ArrayList();
Employee emp1=new Employee();
Employee emp2=new Employee();
Employee emp3=new Employee();
lista.add(emp1);
lista.add(emp2);
lista.add(emp3);
for(Employee emp:lista)
{
emp2.setEmpId(2);
lista.remove(emp2);
}
Pregunta 1: - Entonces, ¿Puedo decir destaca por bucle también utiliza el iterador fail-fast internamente Aunque cuando yo haga a continuación código funciona? bien
for(int i=0;i<lista.size();i++)
{
Employee empTemp=lista.get(i);
lista.remove(emp2);
}
pregunta 2: - Otra cuestión es cuando comunicado decir
si un hilo modifica un una colección
Mi conjetura es que la modificación significa aquí la eliminación o adición no para la actualización del elemento dentro de la colección para la interfaz de la lista, mientras que también incluye la modificación del elemento de la interfaz conjunto. ¿Derecha? Al menos los programas que probé es el caso con ellos.
Editar
conjunto Respecto dudo que mi afirmación anterior es decir, se genera una excepción modificación concurrente cuando tratamos de modificar SET mientras iterating.I trató a continuación código pero no lanzó ninguna excepción
HashSet<Employee> set1= new HashSet();
Employee emp4=new Employee();
Employee emp5=new Employee();
Employee emp6=new Employee();
set1.add(emp4);
set1.add(emp5);
set1.add(emp6);
Iterator iter1=set1.iterator();
while(iter1.hasNext())
{
Employee emp12=(Employee)iter1.next();
System.out.println("");
emp5.setEmpId(2);
}
Idealmente, según el enunciado si el conjunto se modifica en cualquier momento después de que se crea el iterador en http://download.oracle.com/javase/6/docs/api/java/util/HashSet.html, debe arrojar la excepción de modificación concurrente, pero no fue así. No estoy seguro por qué?
Acerca de su ejemplo en la Pregunta 1: "Aunque cuando ejecuto el código a continuación funciona bien" Su código no está bien, está muy enfermo. Si agrega/elimina elementos dentro de un bucle forzado indexado, omitirá algunos elementos o procesará otros elementos dos veces. Es bastante bueno que el iterador arroje una excepción cuando modifica una colección. – toto2