Newsgroup: it.comp.java
Titolo: Problema con ArrayList

Ragazzi ho un grosso problema:
ho creato una classe che riceve i dati da un db e carica due vector ,
uno con le intestazioni e uno con i dati:
import java.sql.*;
import java.util.Vector;
public class FUNC_QUERYbuilder {
    Vector head,dataset;
    String nrecordstr;
    int nrecords;
    private Statement st;
    public FUNC_QUERYbuilder(Connection c) {
        try{
            st = c.createStatement();
	}
	catch(SQLException se){
            System.out.println("SQL error");
	}
    }
    boolean selectqry(String sqlstr){
	try{
            ResultSet rs = st.executeQuery(sqlstr);
            ResultSetMetaData rsm = rs.getMetaData();
        //inizializza i vettori
            head = new Vector(5,5);
            dataset = new Vector(5,5);
	//carica intestazioni colonne
            for(int k = 1; k <= rsm.getColumnCount(); k++)
                head.addElement(rsm.getColumnName(k));
	//carica i dati
            nrecords = 0;
            while (rs.next()) {
                Vector row = new Vector();
                for (int i = 1; i <= rsm.getColumnCount(); i++)
                    row.addElement((rs.getObject(i)));
		dataset.addElement(row);
		nrecords++;
            }
            nrecordstr=""+nrecords;
            if(nrecords==0)
                return false;
            else
                return true;
            }
	catch(SQLException se){
            //System.out.println("SQL error");
            javax.swing.JOptionPane.showMessageDialog(null, "Le
informazioni sono inesatte controllarle attentamente, quindi inserirle
!", "Attenzione", javax.swing.JOptionPane.INFORMATION_MESSAGE);
            return false;
	}
    }
funziona alla grande , ma ora viene il bello,
poichè la classe Vector è sincronyzed, quindi più lenta, volevo
ottimizzarla sostituendo ArrayList
solo che non ci riesco.
Qualcuno di buona volontà potrebbe aiutarmmi e modificare il codice
che ho postato utilizzando ArrayList o qualcosa di simile.
Grazie a tutti

 
Ma non dovrebbe essere sufficiente un refactor?

> Ma non dovrebbe essere sufficiente un refactor?
potresti essere più chiaro?

 
Che ti basta sostituire beceramente ogni occorrenza sella stringa "Vector" con 
"ArrayList"! In effetti forse refactor non e' esattissimo in questo contesto, 
dato che non cambi nome ai Vector..! Usa la funzione Search&Replace del tuo 
editor. Dovrebbe compilare tranquillamente, tranne nei casi in cui passi i tuoi 
Vector a metodi che accettano Vector chiaramente... capita ad esempio con alcuni 
model di Swing, che pero' in genere accettano anche array normali, quindi una 
volta che li hai convertiti in ArrayList, ne chiami il metodo toArray() e vedi 
che non hai problemi. Ho fatto la stessa cosa qualche giorno fa, e non ho avuto 
un solo problema di compilazione.
Let us know
Ciao, co

 solo che non ci riesco.
In che senso non ci riesci?
Cambia le reference di Vector in List, dopodichè istanzi
l'implementazione che preferisci.

Il problema è questo:
ArrayList singlerow = new ArrayList();
ArrayList dataset = new ArrayList();
while (rs.next()) {
                for (int i = 1; i <= rsm.getColumnCount(); i++)
                    singlerow.add((rs.getObject(i)));
                 dataset.add(singlerow);
}
Object [][]  dati = dataset.toArray();
in quest'ultima riga da problemi, perchè dataset.toArray() rilascia un
array monodimensionale mentre a me occorre un array bidimensionale ,
altrimenti come posso gestire i singoli campi se non ho l'accoppiata
riga,colonna?