我正在尝试在另一个数组列表中添加数组列表,并返回最终的数组列表。 我的表中有4条记录,当我尝试显示时,第一组记录只有4次出现。
ArrayList<String> al = new ArrayList<String>();
ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
try
{
conn=com.sample.DBConnection.getDBConnection();
String query= null;
query=com.sample.RRRConstants.REPORT_SUMMERY;
st = conn.createStatement();
rs=st.executeQuery(query);
Map<String, Object[]> summ = new HashMap<String, Object[]>();
while(rs.next())
{
al.add(rs.getString("sched_id"));
al.add(rs.getString("sched_name"));
al.add(rs.getString("gen_date"));
al.add(rs.getString("gen_time"));
al.add(rs.getString("generated_by"));
al.add(rs.getString("gen_version"));
al.add(rs.getString("gen_status"));
list.add(al);
}
}
catch(Exception e)
{
e.printStackTrace();
}
显示:
ArrayList<ArrayList<String>> a1 =rs.getSummary();
ArrayList<String> a2 = new ArrayList<String>();
for (int i=0 ; i <a1.size() ; ++i)
{
a2 = a1.get(i);
System.out.println(i +" record "+a2.get(0));
System.out.println(i +" record "+a2.get(1));
System.out.println(i +" record "+a2.get(2));
System.out.println(i +" record "+a2.get(3));
System.out.println(i +" record "+a2.get(4));
System.out.println(i +" record "+a2.get(5));
System.out.println(i +" record "+a2.get(6));
}
最佳答案
您正在创建一个 ArrayList<String>
,并将对该列表的引用添加到您的 ArrayList<ArrayList<String>>
中多次。
您需要在循环内创建一个新对象,以便每次迭代都会创建一个独立的列表:
while(rs.next())
{
ArrayList<String> al = new ArrayList<>();
...
}
但是,我建议不要使用 ArrayList<String>
无论如何,鉴于您有非常具体的字段,为什么不使用计划 ID、计划名称等属性创建自己的类型呢?这可能比将每个索引与特定含义相关联的字符串列表更容易使用。
关于java - 将数组列表添加到另一个数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30752350/