为什么在插入我的ArrayList后重复行?

时间:2015-01-27 06:10:33

标签: java arraylist

我在我的ArrayList中添加行(1D字符串数组)。我打印它,事先进入确认,arraylist中输入的行是正确的。

惊喜是:在打印我的arraylist时,我可以看到,输入的最后一行总是打印,而不是其他行。

以下是代码:

try {
    while(rs.next())
    {
        for(int i=0; i< parameters.length; i++)
        {
            recordSet[i] = rs.getString(parameters[i]);
        }
        System.out.println("After for loop" + " "+ recordSet[0] +" "+ recordSet[1]+ " " +recordSet[2]);
        ar.add(recordSet);

    }
    System.out.println("Printing the arraylist");
    for (String[] arr : ar) {
        System.out.println(Arrays.toString(arr));
    }
} 
catch (SQLException e){ 
    e.printStackTrace();
    log.error("extractValues: Exception caught while iterating resultSet" + e.toString());
}


Output is:
 After for loop 0 1 rakesh123
 After for loop 0 2 raj123

Printing the arraylist
[0, 2, raj123]
[0, 2, raj123]

2 个答案:

答案 0 :(得分:3)

当您将recordSet添加到List时,您将对while(rs.next()) { String[] recordSet = new String[paramters.length]; // <-- make a new one. for(int i = 0; i < parameters.length; i++) { recordSet[i] = rs.getString(parameters[i]); } System.out.println("After for loop " + recordSet[0] + " " + recordSet[1] + " " + recordSet[2]); ar.add(recordSet); } 使用相同的数组引用。

recordSet

请务必注释掉其他{{1}}声明。

答案 1 :(得分:2)

将新记录集对象分配给while循环中的引用并检查

while(rs.next())
{
   recordSet = new String[paramters.length];
    for(int i=0; i< parameters.length; i++)
    {
        recordSet[i] = rs.getString(parameters[i]);
    }
    System.out.println("After for loop" + " "+ recordSet[0] +" "+ recordSet[1]+ " " +recordSet[2]);
    ar.add(recordSet);

}