为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2022-05-21 17:23:29
Java新手,所以这里是:我想通过这样做来获取我填充的arrayList:ar.add(rs.getString(y));这会产生这样的东西:值1,值2,值3,...并像这样返回它:return (Object[][]) ar.toArray();orString[][] 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));                }            }        }                } 我可能做错了什么?
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

作为好的(恕我直言)一般建议,除非绝对必须,否则不要使用数组;始终使用集合。数组是“高维护”;不方便,不适合泛型。


改变你的方法来返回一个List,List你的生活会更轻松。就像是:


public List<List<String>> getTable() {

    List<List<String>> result = new ArrayList<>();

    for (<every row>) {

        List<String> row = new ArrayList<>();

        // populate row

        result.add(row);

    }

    return result;

}


查看完整回答
反对 回复 2022-05-21
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

ArrayList.toArray() 返回 Object[]。虽然您期待二维结果,但您创建的 ArrayList 是一维的。尝试使用类似的数据结构


List<List> or List<Object[]> 

一个例子应该是这样的:


    List<Object[]> arr=new ArrayList<Object[]>();


       while (rs.next()) {

         Object[] temp=new Object[col];

          for (int i = 0; i < col; i++) {


               String columnValue = rs.getString(i);

               temp[i]=columnValue;

           }

       arr.add(temp);


          }    

 return arr.toArray();


查看完整回答
反对 回复 2022-05-21
  • 2 回答
  • 0 关注
  • 301 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信