java - Java 添加到 ArrayList然后转换为 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;
}
推荐阅读
- asp.net - 有没有办法在编译和部署 ASP.Net Web 应用程序后添加模型、数据访问类、Web api 控制器?
- c++ - C ++:使用多种条件验证字符串
- java - 如何从头开始获取线坐标?
- android - 警告:API 'variantOutput.getPackageApplication()' 已过时
- regex - 用于匹配 yyyy-mm-dd 和 mm/dd/yyyy 的正则表达式
- computer-vision - 使用欧几里得距离匹配 SIFT 描述符有什么问题?
- vb.net-2010 - 如何让用户每行只检查 1 个复选框(我每行有 2 个复选框)?
- here-api - 如何在android SDK中暂停heremaps中的语音指导一段时间?
- python-3.x - 在数据框中查找前 95% 的列值的代码
- c++ - Eigen C++:如何在随机矩阵初始化后修复这些值?