Java - Se repiten los valores de un arraylist

 
Vista:
Imágen de perfil de Miguel Piña

Se repiten los valores de un arraylist

Publicado por Miguel Piña (3 intervenciones) el 19/05/2016 22:33:10
Hola a todos, bueno el problema es el siguiente; estoy haciendo un programa que tiene una base de datos y quiero hacer que regrese una consulta en una lista hecha con una clase de acceso (getter y setter)... pero al momento de ver la lista que me regresa la función me regresa la cantidad de consultas pero todas tienen la misma información de la ultima consulta.

Este es el codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
try{
        if (reporte=='g'){
 
            try {
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(aSQL);
 
            while (rs.next()) {
             int i=0;
 
              dtsGe.setCodigo(rs.getString("codigo"));
              dtsGe.setDescripcion(rs.getString("descripcion"));
              dtsGe.setCategoria(rs.getString("categoria"));
 
              dtsGe.setCod_interno(rs.getString("codigo_interno"));
              dtsGe.setNota(rs.getString("nota"));
 
              dtsGe.setLote(rs.getInt("lote"));
              dtsGe.setF_vencimiento(rs.getDate("f_vencimiento"));
              dtsGe.setF_entrada(rs.getDate("f_entrada"));
              dtsGe.setProveedor(rs.getString("proveedor"));
              dtsGe.setDoc_entrada(rs.getString("doc_entrada"));
              dtsGe.setF_entrada(rs.getDate("f_docentrada"));
              dtsGe.setPrec_compra(rs.getDouble("prec_compra"));
 
              dtsGe.setF_salida(rs.getDate("f_salida"));
              dtsGe.setCliente(rs.getString("cliente"));
              dtsGe.setDoc_salida(rs.getString("doc_salida"));
              dtsGe.setF_salida(rs.getDate("f_docsalida"));
              dtsGe.setPrec_venta(rs.getDouble("prec_venta"));
 
              dtsGe.setNom_envio(rs.getString("nom_envio"));
              dtsGe.setCod_guia(rs.getString("cod_guia"));
              dtsGe.setF_entrega(rs.getDate("f_entrega"));
              dtsGe.setF_aprobado(rs.getDate("f_aprobado"));
              dtsGe.setF_devolucion(rs.getDate("f_devolucion"));
              dtsGe.setF_garantia(rs.getDate("f_garantia"));
              dtsGe.setMotivo(rs.getString("motivo"));
              dtsGe.setNota2(rs.getString("nota2"));
 
              lista.add(i,dtsGe);
              System.out.println(lista.get(i).getCod_interno());
              i++;
            }
 
            System.out.println(lista.get(10).getCod_interno());
            return lista;
 
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
            return null;
        }
        }

En sí este es la parte interesante ya que el mismo problema se repite en métodos parecidos el primer Print me muestra todo los códigos únicos de los productos, ahí la lista está bien, pero en el segundo Print al querer ver el codigo de cualquier producto (en el ejemplo el 10) me sale solo el del ultimo...

No sé que estoy haciendo mal , agradezco su ayuda.
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

Se repiten los valores de un arraylist

Publicado por Maverick (109 intervenciones) el 19/05/2016 23:37:01
Hola Miguel,

Sugiero que debes siempre generar un nuevo objeto dentro de tu while porque sino sobre un mismo objeto estas trabajando, agrega la siguiente linea:

while (rs.next()) {
int i=0;
dtsGe = new MyClase(); // En esta linea generas el objeto
dtsGe.setCodigo(rs.getString("codigo"));
...
...
...

Por otro lado cuando agregas el objeto a la lista sugiero no indicar el indice. Cambia la siguiente linea:

lista.add(i,dtsGe);

Por esta linea

lista.add(dtsGe);

Realiza los cambios sugeridos y me avisas como te fue. Cualquier cosa me puedes escribir a: [email protected]

Saludos

Maverick
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Miguel Piña

Se repiten los valores de un arraylist

Publicado por Miguel Piña (3 intervenciones) el 19/05/2016 23:40:56
Muchas gracias por responder... estuve toda la tarde y la solución estaba frente de mí jajaja muchas gracias amigo , y yo lo tenía sin indice, lo puse así para seguir testeando pero ya lo cambio... gracias de nuevo ^- ^
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

Se repiten los valores de un arraylist

Publicado por Alfredo Franco Lozano (1 intervención) el 15/08/2021 03:58:41
Hola amigo buenas noches, dime como solucionaste esto, me pasa lo mismo, tengo como mas de un millón de registros que triago de 5000 en 5000 pero cuando quiero imprimir en un csv me reptien esos registros con el ultimo elemento, no se xq suceda, tengo mi codigo igual al tuyo
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
sin imagen de perfil

Se repiten los valores de un arraylist

Publicado por Deybic (1 intervención) el 10/02/2022 04:08:11
Muchas gracias dure horas y no encontraba la solución.

while (rs.next()) {
p = new Persona();
p.setId(rs.getInt(1));
p.setNombres(rs.getString(2));
p.setTelefono(rs.getString(3));
p.setCorreo(rs.getString(4));
datos.add(p);
}
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