Foro de elhacker.net

Programación => Java => Mensaje iniciado por: JorgeLamli en 16 Abril 2015, 18:11 pm



Título: Problema al pasar datos de un ArrayList a un LinkedList
Publicado por: JorgeLamli en 16 Abril 2015, 18:11 pm
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

Código:
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


Título: Re: Problema al pasar datos de un ArrayList a un LinkedList
Publicado por: Usuario Invitado en 16 Abril 2015, 23:42 pm
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.