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