PDA

Ver la Versión Completa : [ CONSULTA ] Llenando ArrayList


Capitan Kirk
25/04/12, 17:29:07
Tengo un ArrayList y cago los datos así:

Amigo amigo1 = new Amigo();
amigo1.setTitulo("carlos");
Listin.add(amigo1);
amigo1.setTitulo("pepe");
Listin.add(amigo1);
amigo1.setTitulo("adolfo");
Listin.add(amigo1);


El caso es que al ver la lista yo esperaba ver:
carlos
pepe
adolfo

y no, en lugar de eso veo:
adolfo
adolfo
adolfo

¿porque? ¿como tendría que hacerlo para que salga bien ?

kriogeN
25/04/12, 18:59:32
El ArrayList almacena las referencias, así que realmente has almacenado 3 referencias a amigo1 y por eso si haces un cambio en amigo1 también cambiará en el ArrayList.

El código correcto sería el siguiente:

Amigo amigo1 = new Amigo();
amigo1.setTitulo("carlos");
Listin.add(amigo1);
amigo1 = new Amigo();
amigo1.setTitulo("pepe");
Listin.add(amigo1);
amigo1 = new Amigo();
amigo1.setTitulo("adolfo");
Listin.add(amigo1);

En Java todo (a excepción de los enteros, decimales, floats, booleanos y poco más, creo que también los string, pero de esto no estoy muy seguro) son referencias, así que un cambio en el objeto de origen supondrá un cambio en todos los objetos que lo referencien.