java - 字符串数组的 ArrayList 只保存最后一条记录

标签 java arrays arraylist

我的 ArrayList 在 Java 方面需要一些帮助。我花了很长时间调试,但仍然如此。问题是 - 我将一些数据从数据库保存到字符串数组并将该数组保存到 ArrayList,在输出中它多次只保存最后一个元素。看起来它只是重写它。

String[] result=new String[2];
String userId=Personal_Organizer.userProfile.getUserID();
ArrayList<Object> params = new ArrayList<Object>();           
params.add(userId);
String query1 = "select * from tblMemos where "
        + "_user_id = ?";

int rows;
System.out.println(query1);
executeQueryP(query1, params);

ArrayList<String[]> fetched = new ArrayList<String[]>();
int i=0;

try {
    while(rs.next()) {

        result[0] = rs.getString(2);
        result[1] = rs.getString(3);

        System.out.print("Counter: "+i);
        try{
            fetched.add(i,result);//here tried just .add(result) and output is same.
            i++;
        }catch(Exception e){
            System.out.println("Exceptional exception "+e);
        }

    }
    // Just to check. I have 2 records in DB and it shows last record twice 
    System.out.println(fetched.size());
    System.out.println(fetched.get(0)[0]);
    System.out.println(fetched.get(1)[0]);
}
// ...

最佳答案

您必须在每次迭代中创建一个新的数组实例:

while(rs.next()) {
    result = new String[2];
    result[0] = rs.getString(2);
    result[1] = rs.getString(3);
    fetched.add(result);
}

否则,您将多次向列表中添加相同的数组实例,并且每次迭代都会用最新数据覆盖该数组的内容。

关于java - 字符串数组的 ArrayList 只保存最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30844387/

相关文章:

java - 在单独的行中显示每个列表元素(控制台)

java - 为什么我的 JPanel 不显示?

c - 根据 C 中终端的可用大小自动适应的二维数组

php - 将键数组转换为关联数组

mysql - MySQL 中是否有 IN() 的 "inverse"函数?

java - 不可转换类型错误

java - Android 上的 HTTP GET 和 POST 失败

java - log4j 根据应用程序的登录用户在不同的文件中添加日志

java - Spring Cron 表达式 : 10 minutes after every hour

java - 在嵌套循环中将子列表添加到 Guava 表中会出现并发修改错误