Java 如何创建动态arraylist并将arraylist放入hashmap?

Java 如何创建动态arraylist并将arraylist放入hashmap?,java,jsp,servlets,Java,Jsp,Servlets,每个表都有不同的列,那么如何将此代码用于动态sql表呢?假设,我可以通过其他方法获得列值,列数可以从Information.Schema获得。 假设,int值i中存储的列数。 如何使用循环并动态执行此操作?请参考您在评论中提到的循环问题。试试这样的。希望它能回答你的问题。但是如果您更详细地描述业务场景,它会更有帮助 public HashMap viewTableData(String tabName) { ArrayList<String> arrayList

每个表都有不同的列,那么如何将此代码用于动态sql表呢?假设,我可以通过其他方法获得列值,列数可以从Information.Schema获得。 假设,int值i中存储的列数。
如何使用循环并动态执行此操作?

请参考您在评论中提到的循环问题。试试这样的。希望它能回答你的问题。但是如果您更详细地描述业务场景,它会更有帮助

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;
   }

不确定您到底在寻找什么,但这个类ResultSetAdapter可能有帮助:

它包装了一个JDBCResultSet实例,使其看起来像一个列表,换句话说,就是一个映射列表。您可以像这样对其进行迭代:

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);
} 

这种方法的一个优点是,您不需要将结果集中的值复制到新的列表或映射中-适配器类只需装饰结果集,使其看起来像映射列表。

ArrayList通常是动态的。我认为HashMap不适用于此。HashMap只允许键是唯一的,在数据库中它不必是唯一的。您最好使用分类列表,并对其进行二进制搜索。也可以使用内存中的数据库;我可以说得更具体一点,比如你们想要实现什么,你们面临的是什么问题。你在哪里初始化了arraylist和Map请看代码,我在函数的开头初始化过。
// 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));
    }
}