[英]Java adding to ArrayList<String> and then converting to 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));
}
}
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
return (Object[][]) ar.toArray();
}
我可能做错了什么?
作为好的(恕我直言)一般建议,永远不要使用数组,除非你绝对必须; 始终使用集合。 数组是“高维护”的; 不方便,并且不能很好地使用泛型。
更改您的方法以返回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;
}
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.