我需要Java中的ArrayList帮助。我花了很长时间调试,但仍然。问题是 - 我将一些数据从数据库保存到字符串数组并将此数组保存到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]);
}
// ...
答案 0 :(得分:5)
您必须在每次迭代中创建一个新的数组实例:
while(rs.next()) {
result = new String[2];
result[0] = rs.getString(2);
result[1] = rs.getString(3);
fetched.add(result);
}
否则,您将多次向List添加相同的数组实例,并且每次迭代都会使用最新数据覆盖该数组的内容。