Java - ayuda urgente con un FIFO

 
Vista:

ayuda urgente con un FIFO

Publicado por kreke (2 intervenciones) el 12/06/2007 20:43:03
Hola, si alguien me puede echar una mano lo antes posible se lo agradecería mucho,
llevo unos dias dandole vueltas a una practica que estoy haciendo y en el problema es el siguiente:

Trato de hacer una FIFO con una LinkedList, cada elemento que le añado es un ArrayList,
el problema es que este ArrayList va cambiando en la ejecucion del programa, para explicarme mejor supngamos que el ArrayList se llama 'umw' y contiene 'ab' cuando se inserta en la pila(hasta aqui bien). Despues se varia 'umw' de forma que ahora vale 'cd' se vuelve a insertar en la pila. Ahora la pila cebería contener('ab','cd') pero lo que realmente contiene es ('cd','cd') es decir en lugar de guardar los datos guarda como un puntero o algo asi al ArrayList de forma que cuando varia me fastidia todo...

Entonces la pregunta es como puedo hacer para ir cambiando un ArrayList 'umw' e ir metiendolo en la pila sin que me pase esto?

Gracias de antemano al que me conteste.. :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda urgente con un FIFO

Publicado por angel (537 intervenciones) el 13/06/2007 09:22:18
quizas no este reinicializando el arraylist "umw" antes de volver a insertarlo en l linkedlist...

Este codigo añade a un arraylist 2 elementos y luego añade ese arraylist al linkedlist.

LinkedList lk = new LinkedList();
ArrayList umw = new ArrayList();
umw.add("a");
umw.add("b");
lk.add(umw);
umw = new ArrayList();
umw.add("c");
umw.add("d");
lk.add(umw);

for(int i=0;i<lk.size();i++)
{
umw = (ArrayList)lk.get(i);
for(int j=0;j<umw.size();j++)
{
System.out.println(umw.get(j));
}
}

Si en vez de hacer:
umw = new ArrayList();
lo que estas haciendo es recoger el umw del linkedlist..
umw = (ArrayList) lk.get(0);
tienes k saber,,,k si lo modificas,,tmb modificas el contenido de linkedlist..ya que estas modificando la direccion de memoria donde se almacena umw.... Para evitarlo podrias crear otro arraylist y copiar el contenido de umw en ese nuevo arraylist, asi ya podrias modificar su contenido sin alterar el que se encuentra en el linkedlist,,,,,y digo copiar, no ArrayList nuevo = umw; asi solo creas otro linkedlist que apunta a la misma direccion d memoria de umw y si la modificas, tmb modificas umw..

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

muchas gracias

Publicado por kreke (2 intervenciones) el 13/06/2007 18:45:56
Muchisimas gracias angel! estos foros estan genial, yo es la primera vez que pongo una duda y la verdad es que estoy muy satisfecho, no esperaba obtener una respuesta tan rapido, gracias de nuevo.

respecto al error la verdad es que ya me habia dado cuanta ayer a ultima hora, mira que le di vueltas a la practica, y al final era una tontería, soy burrisimo :)

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar