为什么在我的 ArrayList 中插入后行重复?
Why are rows duplicated after inserting in my ArrayList?
我正在我的 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]
当您将 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
声明。
将新的记录集对象分配给 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);
}
我正在我的 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]
当您将 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
声明。
将新的记录集对象分配给 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);
}