Problemas con LinkedList

Estoy realizando una actividad para un grado superior de informática en la que tengo que recuperar información de una Base de Datos y trasladarla a un jTable (a través de un DefaultTableModel). El código que utilizo es éste:
LinkedList <Vector>filas = new LinkedList();
Vector datos = new Vector();
       while(rs.next())
        {
            datos.clear();
            for(int i=1; k<=numColumnas; i++)
            {
                datos.add(rs.getObject(i));
            }
            System.out.println("Valor de datos: " + datos.toString());
            filas.add(datos);
            System.out.println("LinkedList: " + filas.toString());
        }
Hago los System. Out para comprobar que realiza bien la creación del Linkedlist. El ResultSet (rs) está compuesto de dos filas de datos sobre libros. El problema es que al añadir el segundo Vector datos (filas. Add(datos)) me machaca el primero y duplica la información en el jTable. A continuación te pongo lo que me aparece en el output de NetBeans (gracias a los System. Out que le he puesto):
Valor de datos: [El Codigo Da Vinci, 1351431, 2001]
LinkedList: [[El Codigo Da Vinci, 1351431, 2001]]
Valor de datos: [Los Pilares de la Tierra, 1316347, 2005]
LinkedList: [[Los Pilares de la Tierra, 1316347, 2005], [Los Pilares de la Tierra, 1316347, 2005]]
¿Alguna solución? Llevo más de 2 horas dándole vueltas y no hay manera, he intentado añadir los Vectores al LinkedList con .addFirst, .addLast, .add(int indice, Vector) y no hay manera.

1 Respuesta

Respuesta
1
El problema que me parece que pasa es que cada repetición le das clear al vector y luego le agregas el mismo objeto las veces de todos. (Espero haberme explicado con eso)
Creo que quedaría algo como lo siguiente.
LinkedList <Vector>filas = new LinkedList();
Vector datos = new Vector();
datos.clear();
       while(rs.next())
        {
            for(int i=1; k<=numColumnas; i++)
            {
                datos.add(rs.getObject(i));
            }
            System.out.println("Valor de datos: " + datos.toString());
            filas.add(datos);
            System.out.println("LinkedList: " + filas.toString());
        }
Algo sumamente importante, de donde es la variable numColumnas. Esto te lo pregunto porque si es cierto rs.next() ira agregando como se deba. No estoy muy seguro. Me comentas y cualquier cosa te sigo ayudando.
:D
Perdón, XD es ¿de dónde?. Disculpa el interés por la ortografía xd.
Gracias por tu ayuda, pero ya he solucionado el problema. Tenía que crear el Vector dentro del bucle while, si no no me lo cerraba cada vez, entonces ya no necesito el .clear(). La variable numColumnas tiene el valor metaData.getColumCount() del rs.
Gracias de todas formas por tu interés.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas