Java 添加到 ArrayList<String> 然后转换为 Object[][]

Java新手,所以这里是:


我想通过这样做来获取我填充的arrayList:


ar.add(rs.getString(y));


这会产生这样的东西:


值1,值2,值3,...


并像这样返回它:


return (Object[][]) ar.toArray();


or


String[][] res = new String[ar.size()][];

return ar.toArray(res);

尽管这似乎只是将Null、Null、Null全部放在其中。


当它通过ar.add(...) 填充时,我确保它确实有数据(并且确实有)。


所有这些都是为了让我可以创建一个表:


TableModel model = new EditableTableModel(columnTitles, dataEntries);

dataEntries是它需要的Object[][] 。


原始的dataEntries 代码是:


 Object[][] dataEntries = {

     { "value1", "value2", "value3", "value4", "value5", "value6", "value7" },

     { "value1", "value2", "value3", "value4", "value5", "value6", "value7" },

     etc...

 };

第一次测试时效果很好。这些值按应有的方式显示在jTable中。


这是我的完整代码:


private void initialize() throws Exception {

    [more code here]

    Object[][] dataEntries = reloadData();

    TableModel model = new EditableTableModel(columnTitles, dataEntries);

    table = new JTable(model);

    [more code here]

}


@SuppressWarnings("unchecked")

private Object[][] reloadData() throws Exception {      

    SQLiteJDBCLoader.initialize();

    ArrayList<String> ar = new ArrayList<String>();

    SQLiteDataSource dataSource = new SQLiteDataSource();

    dataSource.setUrl(dbPath);


    try {

        ResultSet rs = dataSource

                      .getConnection()

                      .createStatement()

                      .executeQuery("Select "

                                    + "data_script, "

                                    + "data_status, "

                                    + "data_errors, "

                                    + "data_tester, "

                                    + "data_rundate, "

                                    + "data_tools, "

                                    + "ID "

                                  + "FROM allData");


        int row = 5;

        int col = 6;


        while (rs.next()) {

            for (int x = 1; x < row; x++) {

                for (int y = 1; y < col; y++) {

                    ar.add(rs.getString(y));

                }

            }

        }            

    } 

我可能做错了什么?



开满天机
浏览 302回答 2
2回答

慕的地10843

作为好的(恕我直言)一般建议,除非绝对必须,否则不要使用数组;始终使用集合。数组是“高维护”;不方便,不适合泛型。改变你的方法来返回一个List,List你的生活会更轻松。就像是:public List<List<String>> getTable() {&nbsp; &nbsp; List<List<String>> result = new ArrayList<>();&nbsp; &nbsp; for (<every row>) {&nbsp; &nbsp; &nbsp; &nbsp; List<String> row = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; // populate row&nbsp; &nbsp; &nbsp; &nbsp; result.add(row);&nbsp; &nbsp; }&nbsp; &nbsp; return result;}

慕码人2483693

ArrayList.toArray() 返回 Object[]。虽然您期待二维结果,但您创建的 ArrayList 是一维的。尝试使用类似的数据结构List<List> or List<Object[]>&nbsp;一个例子应该是这样的:&nbsp; &nbsp; List<Object[]> arr=new ArrayList<Object[]>();&nbsp; &nbsp; &nbsp; &nbsp;while (rs.next()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Object[] temp=new Object[col];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < col; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String columnValue = rs.getString(i);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;temp[i]=columnValue;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp;arr.add(temp);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;&nbsp;return arr.toArray();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java