Problema al pasar datos de un ArrayList a un LinkedList

Iniciado por JorgeLamli, 16 Abril 2015, 18:11 PM

0 Miembros y 1 Visitante están viendo este tema.

JorgeLamli

Hola chicos, tengo que pasar datos de un LinkedList a un ArrayList pero al hacerlo me tira un ConcurrentModificationException. Os dejo el codigo a ver si me podeis decir el problema

Iterator iteradorLinked = colecLinked.iterator();
Iterator iteradorArray = colecArray.iterator();

Hijo hijoLinked;
Hijo hijoArray;
boolean preg;

System.out.println("elementos en el LinkedList");
while (iteradorLinked.hasNext()) {
hijoLinked = (Hijo) iteradorLinked.next();
hijoArray = (Hijo) iteradorArray.next();

System.out.println(hijoLinked.nombre + ", " + hijoLinked.edad);

preg = equals(hijoLinked, hijoArray);
System.out.println(preg);

if (preg == false) {
System.out.println("Añadimos " + hijoLinked.nombre + ", "
+ hijoLinked.edad + " al ArrayList");
colecArray.add(new Hijo(hijoLinked.nombre, hijoLinked.edad));


}

}
public static boolean equals(Hijo hLinked, Hijo hArray) {
Hijo linked = (Hijo) hLinked;
Hijo array = (Hijo) hArray;
return linked.nombre.equals(array.nombre) && linked.edad == array.edad;

}


El primer elemento del LinkedList es igual a uno de los que hay en el ArrayList y no se debe agregar a este. Pero al llegar al segundo elemento es cuando me da la excepcion

Usuario Invitado

Es un problema de concurrencia común cuando se utiliza Iterator. Tienes opciones, como declarar un boque synchronized, utilizar clases concurrentes como ConcurrentHashMap o CopyOnWriteArrayList o recorrer la lista con un foreach. Lo más fácil es recorrer la lista con un foreach, que viene a ser lo mismo que for (Iterator i = coleccion.iterator(); i.hasNext().


Saludos.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein