簡體   English   中英

如何創建動態arraylist並將arraylist放入hashmap?

[英]How to create dynamic arraylist and put the arraylists into hashmap?

public HashMap viewTableData(String tabName)
   {
       ArrayList<String> arrayList = new ArrayList<String>(); 
       ArrayList<String> arrayList2 = new ArrayList<String>(); 
       ArrayList<String> arrayList3 = new ArrayList<String>(); 
       ArrayList<String> arrayList4 = new ArrayList<String>(); 
       HashMap discoverMap = new HashMap();

        try {

            con = DAOConnection.sqlconnection();
            stmt = con.createStatement();
            stmt = con.createStatement();
            query = "SELECT * FROM "+tabName;
            System.out.println("Qry executed");
            ps = con.prepareStatement(query);
            rs = ps.executeQuery(query);


            while(rs.next())
            {

                arrayList.add(rs.getString(i));
                arrayList2.add(rs.getString(2));
                arrayList3.add(rs.getString(3));
               arrayList4.add(rs.getString(4));


            }

            discoverMap.put("qrycol1", arrayList);
            discoverMap.put("qrycol2", arrayList2);
            discoverMap.put("qrycol3", arrayList3);
            discoverMap.put("qrycol4", arrayList4);

        } catch (SQLException ex) {
            Logger.getLogger(Query.class.getName()).log(Level.SEVERE, null, ex);

        }
        return discoverMap;
   }

每個表都有不同的列,那么如何對動態sql表使用此代碼?(假設,我可以通過其他方法獲取列值,可以從Information.Schema中獲取列數。)假設,列存儲的數量以int值i。 如何使用循環並使其動態地工作?

關於您在注釋中提到的循環問題。 嘗試這樣的事情。 希望它能回答您的問題。 但是,如果您更詳細地描述業務場景,那將會更有幫助。

Map discoverMap = new HashMap();
for(int i=1; i<=4; i++){
    List<String> list = new ArrayList<String>();
    list.add(rs.getString(i));
    discoverMap.put("querycol"+i,list);
} 

不確定您要查找的是什么,但是也許此類( ResultSetAdapter )可以幫助您:

https://github.com/gk-brown/HTTP-RPC/blob/master/Server/Java/httprpc-server/src/org/httprpc/sql/ResultSetAdapter.java

它包裝了JDBC ResultSet實例,並使它看起來像List<Map<String, Object>> (換句話說,就是地圖列表)。 您可以像這樣遍歷它:

// Iterate over rows
for (Map<String, Object> row : new ResultSetAdapter(resultSet)) {
    // Iterate over columns within current row
    for (String column : row.keySet()) {
        System.out.println(column + " = " + row.get(column));
    }
}

這種方法的優點是您不需要將結果集中的值復制到新列表或映射中-適配器類僅修飾結果集,使其看起來像映射列表。

暫無
暫無

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

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