簡體   English   中英

將數組列表添加到另一個數組列表

[英]Adding array list to another arraylist

我試圖在另一個數組列表中添加數組列表,並返回最終的數組列表。 我在表中有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,計划名稱等屬性的自己的類型呢? 與將每個索引都具有特定含義的字符串列表相比,使用該字符串可能要容易得多。

改變你的while語句,和再次al喜歡這個

while(rs.next()) {
   ArrayList<String> al = new ArrayList<String>();
   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);   
}

否則,您只有一個包含所有內容的ArrayList實例,而用例需要為每個循環使用一個ArrayList。

您每次循環都添加相同的列表。 嘗試每次創建一個新列表。 像這樣:

while(rs.next())
        {
           ArrayList<String> al = new ArrayList<String>();
            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);   

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM