HashMap在执行put后,key不相同,但前面的键被覆盖了
是从数据库中查出记录,然后存到一个HashMap组成的List中,数据库字段是不可能重复的,但是通过断点跟踪发现,某些前面取出的键被覆盖了,代码如下:
public static List executeQuery(String sql) throws Exception {
System.out.println(sql);
List rsall = new ArrayList();
Connection con = connectToDb();
Statement stmt = null;
ResultSet rs = null;
Map rsTree;
try {
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
while (rs.next()) {
rsTree = new HashMap(numberOfColumns);
for (int r = 1; r < numberOfColumns + 1; r++) {
rsTree.put(rsmd.getColumnName(r).toLowerCase(), rs.getObject(r)); }
rsall.add(rsTree);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return rsall;
}