我在编写这段代码时遇到了一个问题并且我解决了它,但是我不确定它背后的原因,所以如果有人能解释它为什么会发生这种情况会很棒。
问题如下:
rowData
是ArrayList<String>
,reportData
是ArrayList<ArrayList>
下面的代码循环遍历数据库的结果,对于查询结果的每一行,rowData
都附加了列的字符串值(for循环)以形成完整的数据行,然后每个行附加到reportData
。
while(rs.next()) {
rowData.clear();
for(int i = 0; i < wrapper.getColumnCount(); i++) {
rowData.add(rs.getString(i+1));
}
System.out.println("rowData being pushed to reportData" + rowData);
reportData.add(rowData);
}
System.out.println(reportData);
现在出现问题:假设有3行数据。第一个System.out.println
正确打印每个不同的数据行。但是,当第二个打印时,它会显示reportData
已填充最后一行数据<3> 。
当我这样做时,这就解决了:
while(rs.next()) {
//rowData.clear();
ArrayList<String> rowData = new ArrayList<String>();
for(int i = 0; i < wrapper.getColumnCount(); i++) {
rowData.add(rs.getString(i+1));
}
System.out.println("rowData being pushed to reportData" + rowData);
reportData.add(rowData);
}
System.out.println(reportData);
现在reportData
已正确填充。这是直觉的,但我不确定为什么会发生这种情况。