Java ArrayList`clear()`方法不同于新的初始化ArrayList对象

时间:2017-06-09 15:11:02

标签: java arraylist initialization clear

我在编写这段代码时遇到了一个问题并且我解决了它,但是我不确定它背后的原因,所以如果有人能解释它为什么会发生这种情况会很棒。

问题如下:

rowDataArrayList<String>reportDataArrayList<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已正确填充。这是直觉的,但我不确定为什么会发生这种情况。

0 个答案:

没有答案