Ver Mensaje Individual
  #6 (permalink)  
Antiguo 04/10/2010, 04:57
Avatar de Xerelo
Xerelo
 
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: problema al tener dos arrays iguales

Cuando pasas un ArrayList(objeto) a un método, sea o no de la misma clase, lo que realmente le pasas es una referencia al objeto.

Por lo tanto, si quieres tratar ese objeto sin que afecte al original necesitas crear otro objeto. Puedes pasarle como parámetro la lista clonada, o pasarle el original y crear la nueva lista en el método.

Si utilizas clone(), tendrás una copia del arrayList, si usas toArray(), creas un nuevo objeto de tipo array, no de arrayList. En cualquier caso, ninguno será el objeto original, por lo que puedes modificarlo. Eso sí, si creas el clon en el método, una vez que salgas del método perderás los cambios en la copia, a menos que lo devuelvas con un return y se lo asignes a la referencia original o a otra referencia que hayas creado.

Tienes que diferenciar entre modificar el contenido del array, y modificar los objetos contenidos en un array. Si eliminas o añades un objeto en la lista copia, en el original seguirán existiendo los mismos objetos que al principio, pero si modificas un objeto Persona, entonces se te modifica en la copia y en el original.

Recuerda, ArrayList es un array dinámico, toArray() genera un array estático, no son el mismo tipo de objeto.