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

[SOLUCIONADO] Objetos repetidos en Arraylist

Estas en el tema de Objetos repetidos en Arraylist en el foro de Java en Foros del Web. Hola existe algun problema al añadir elementos a un ArrayList? Me explico Tengo este Arraylist List<Pregunta> preguntasleidas= new ArrayList<Pregunta>(); Desde un metodo voy leyendo preguntas ...
  #1 (permalink)  
Antiguo 17/09/2013, 02:50
 
Fecha de Ingreso: septiembre-2009
Mensajes: 84
Antigüedad: 15 años, 3 meses
Puntos: 2
Objetos repetidos en Arraylist

Hola existe algun problema al añadir elementos a un ArrayList?

Me explico

Tengo este Arraylist

List<Pregunta> preguntasleidas= new ArrayList<Pregunta>();

Desde un metodo voy leyendo preguntas desde un xml
Mientras las voy leyendo compruebo que los datos esta bien por ejemplo

Pregunta 1 respuesta b
Pregunta 2 respuesta a

A cada pregunta le hago un preguntasleidas.add(preguntaleida)

Una vez finalizada la lectura listo los objetos del arraylist y me doy cuenta que estan repetidos de esta forma

Pregunta 2 respuesta a
Pregunta 2 respuesta a

Estoy haciendo algo mal?
  #2 (permalink)  
Antiguo 17/09/2013, 03:53
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 22 años, 5 meses
Puntos: 361
Respuesta: Objetos repetidos en Arraylist

Hola:

Sin ver el código es difícil saber donde está el error.

Saludos.

  #3 (permalink)  
Antiguo 17/09/2013, 04:03
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Objetos repetidos en Arraylist

La verdad es que tampoco está muy clara la duda, pero entre el título "Objetos repetidos en Arraylist" y "existe algun problema al añadir elementos a un ArrayList", te comento un error típico de los que empiezan.

Si haces algo como esto

Código Java:
Ver original
  1. unElemento = new UnElement();
  2. bucle {
  3.          unElemento.setValor(valor);
  4.          lista.add(unElement);
  5. }

como solo has hecho un new, lo que has hecho es añadir ese unico elemento muchas veces por lo que tendrás una lista en que todas las posiciones son el mismo elemento. Con setVAlor() has ido cambiando el contenido del único elemento que tenías, por lo que al final, en la lista todas las posiciones tienen el mismo elemento con el último valor que hayas puesto.

Debes hacer un new por cada elemento nuevo

Código Java:
Ver original
  1. bucle {
  2.        // el new dentro del bucle.
  3.        unElemento = new UnElemento();
  4.        unElemento.setValor(unValor);
  5.        lista.add(unElemento);
  6. }

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 17/09/2013, 04:40
 
Fecha de Ingreso: septiembre-2009
Mensajes: 84
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Objetos repetidos en Arraylist

Cita:
Iniciado por chuidiang Ver Mensaje
La verdad es que tampoco está muy clara la duda, pero entre el título "Objetos repetidos en Arraylist" y "existe algun problema al añadir elementos a un ArrayList", te comento un error típico de los que empiezan.

Si haces algo como esto

Código Java:
Ver original
  1. unElemento = new UnElement();
  2. bucle {
  3.          unElemento.setValor(valor);
  4.          lista.add(unElement);
  5. }

como solo has hecho un new, lo que has hecho es añadir ese unico elemento muchas veces por lo que tendrás una lista en que todas las posiciones son el mismo elemento. Con setVAlor() has ido cambiando el contenido del único elemento que tenías, por lo que al final, en la lista todas las posiciones tienen el mismo elemento con el último valor que hayas puesto.

Debes hacer un new por cada elemento nuevo

Código Java:
Ver original
  1. bucle {
  2.        // el new dentro del bucle.
  3.        unElemento = new UnElemento();
  4.        unElemento.setValor(unValor);
  5.        lista.add(unElemento);
  6. }

Se bueno.
Ese era el problema, habia olvidad reinicializar el objeto cadad vez

Muchas gracias

Etiquetas: arraylist, metodo, objetos, repetidos
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 12:40.