almacenar arrays en un arraylist

aodriozo
14 de Abril del 2005
alguien nos podria ayudar??? estamos intentando almacenar arrays en un arraylist. El add en el arraylist nos va bien pero cada vez que hacemos un add del array en el arraylist nos cambia todos los arrays almacenados en posiciones anteriores del arrayList. Como resultado conseguimos un arrayList con mas de una posicion pero en todas almacena el mismo array, por cada add del array en el arraylist nos machaca los anteriores arrays en todas las posiciones del arraylist.

pedro
14 de Abril del 2005
Has de tener en cuenta que las colecciones te guardan referencias de los objetos, no una copia. Por ejemplo, si tienes:

/*1*/int[] ejemplo = {1};
/*2*/ArrayList list = new ArrayList();
/*3*/list.add(ejemplo);
/*4*/ejemplo[0] = 2;

entonces en tu arraylist tendrás {2} pq el arraylist guarda la referencia al objeto ejemplo cuyo contenido puedes cambiar en cualquier momento tal y como se hace en la linea 4.
Si quieres evitar esto, no reutilices el array....

ArrayList list = new ArrayList();
int[] dato0 = {1};
list.add(dato0);
int[] dato1 = {2};
list.add(dato1);
...



aodriozo
14 de Abril del 2005
si de acuerdo pedro, gracias, ahora sabemos por que nos funciona mal, pero lo que no sabemos es como solucionarlo, pq nos parece excesivo crear un nuevo array por cada puntero que queremos crear en el arraylist, teniendo en cuenta ademas que tampoco podemos saber cuantos punteros vamos a guardar en el arraylist ya que ese valor sera dinamico, como tambien seran dinamicos los arrays que queremos crear.
Muchas gracias por ayudarnos!!!!!