Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Paso y modificacion de un ArrayList

Estas en el tema de Paso y modificacion de un ArrayList en el foro de Java en Foros del Web. Buenas, mi problema es claramente de desconocimiento :P veran, tengo: --------------------------------------------- · arrayList estatico de nombre 'arrayPrincipal' · tengo un metodo 'getArray' que devuelve el ...
  #1 (permalink)  
Antiguo 26/05/2013, 08:20
 
Fecha de Ingreso: mayo-2013
Mensajes: 3
Antigüedad: 10 años, 10 meses
Puntos: 0
Paso y modificacion de un ArrayList

Buenas, mi problema es claramente de desconocimiento :P veran, tengo:

---------------------------------------------
· arrayList estatico de nombre 'arrayPrincipal'

· tengo un metodo 'getArray' que devuelve el arrayPrincipal

· tengo otro metodo 'leerArchivo' que recibe como parametro la ruta del archivo de la que leera y lo mete en un ArrayList creado por el que lo devuelve lleno

y aqui va el asunto en cuestion:

· metodo meterEnArray(ArrayList a, "ruta del archivo") {
a = leerArchivo("ruta del archivo");
}

y lo llamo:
· meterEnArray(getArray(), "ruta del archivo");
-----------------------------------------------

lo que pretende el codigo es meter, el ArrayList lleno que devuelve el metodo leerArchivo, en el arrayPrincipal...
pero no lo hace :P llena el array a, pero no se llena el arrayPrincipal, y que yo sepa los ArrayList se pasan por referencia no por valor.
Lo que supongo es que al pasar el ArrayList en el meterEnArray, el metodo se crea una copia, el 'a', y lo modifica solo a el...

En fin, me gustaria que me explicaran por que pasa esto y como se podria solucionar, muchas gracias desde ya.

EDITADO:
Lo que me parece mas raro es que tengo otro metodo 'setArray' que es basicamente igual que el metodo 'meterEnArray', le paso un array y variables con valores.
y dentro del metodo tambien es igual, le meto nuevos valores al array pasado por parametro al 'a' (con add) y se me actualiza el arrayPrincipal :S (probe dentro del metodo 'meterEnArray' meter valores con .add pero sige sin actualizarse el 'arrayPrincipal'...

Última edición por javaerror; 26/05/2013 a las 08:50 Razón: mas
  #2 (permalink)  
Antiguo 26/05/2013, 09:58
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 10 años, 11 meses
Puntos: 9
Respuesta: Paso y modificacion de un ArrayList

¿Podrías poner el código de los métodos con los que tienes los problemas?
  #3 (permalink)  
Antiguo 26/05/2013, 11:05
 
Fecha de Ingreso: mayo-2013
Mensajes: 3
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Paso y modificacion de un ArrayList

Bueno, despues de una exaustiva prueba xDDD encontre lo que creo o parece que le pasa.

efectivamente en el metodo 'meterEnArray' al asignar al array pasado por parametro 'a' el nuevo array mediante el igual '=' perdia la referencia del arrayPrincipal...

me explico:

· puse antes del "a = leerArchivo("ruta del archivo");" un .add (a.add("blabla"))
· y otro .add (a.add("blabla")) despues del "a = leerArchivo("ruta del archivo");"

y el resultado fue que:
· el primer add se metia en los 2 arrays, tanto el 'a' como el 'arrayPrincipal'
· el segundo add(el que va despues de la asignacion) solo lo ha metido en el 'a'

Solucion¿? he utilizado el .addall(meto aqui el array lleno que me pasa el metodo leerArchivo) que para algo esta xDD y supuestamente es la manera mas correcta.
--------------------------------------

Aun asi, sigo interesado en saber si la deduccion echa es correcta y si es asi por que pierda la referencia con el arrayPrincipal despues de usar la asignacion igual '='

Un saludo y gracias por todo.
  #4 (permalink)  
Antiguo 26/05/2013, 12:00
 
Fecha de Ingreso: mayo-2013
Mensajes: 3
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Paso y modificacion de un ArrayList

Bueno, pongo fin a este tema, por que acabo de descubrir el problema... y era simple, como suponia :P

el igual '=' referencia o apunta no añade el contenido de la derecha en la parte izquierda como pensaba en un principio.

Con lo cual al entrar en el metodo 'meterEnArray':
· primero el array 'a' referenciaba al 'arrayPrincipal', asi que cualquier cambio en el se reflejaba en el original.
· pero despues de usar '=' el array 'a' referenciaba al array devuelto por el metodo 'leerArchivo', y claro si modificaba el array 'a' ya no modificaba el 'arrayPrincipal' por que ya no lo estaba referenciando o apuntando...

en fin, si no es asi me gustaria que me corrigan y si lo es pueden cerrar el tema y siento las molestias.

Etiquetas: arraylist
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:54.