Java 为什么在我的ArrayList中插入后会重复行?
我正在ArrayList中添加行(1D字符串数组)。我正在打印它,在输入maake之前,确保arraylist中输入的行是正确的 令人惊讶的是:在打印我的arraylist时,我可以看到,输入的最后一行总是被打印,而不是其他行 代码如下:Java 为什么在我的ArrayList中插入后会重复行?,java,arraylist,Java,Arraylist,我正在ArrayList中添加行(1D字符串数组)。我正在打印它,在输入maake之前,确保arraylist中输入的行是正确的 令人惊讶的是:在打印我的arraylist时,我可以看到,输入的最后一行总是被打印,而不是其他行 代码如下: try { while(rs.next()) { for(int i=0; i< parameters.length; i++) { recordSet[i] = rs.getStr
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]
试试看{
while(rs.next())
{
对于(int i=0;i
将记录集添加到列表时,您使用的是相同的数组引用
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);
}
while(rs.next())
{
String[]recordSet=新字符串[parameters.length];//将记录集添加到列表中时,您使用的是与记录集
相同的数组引用
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);
}
while(rs.next())
{
String[]recordSet=新字符串[parameters.length];//在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);
}
while(rs.next())
{
记录集=新字符串[Parameters.length];
对于(int i=0;i
在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);
}
while(rs.next())
{
记录集=新字符串[Parameters.length];
对于(int i=0;i
对不起,我不明白,我原以为旧条目会被覆盖,不是吗?是的,但只有一个数组。所以当你覆盖值时,你也会修改列表中的一个。你已经多次将相同的引用添加到列表中。
。对不起,我不明白,我原以为旧条目会被覆盖是的,但是只有一个数组。因此,当您覆盖值时,您也会修改列表中的值。您已经多次将相同的引用添加到列表中。