【发布时间】:2014-01-15 07:22:15
【问题描述】:
我正在尝试循环一个结果集并将值存储在 Map 中并将地图保存到列表中,但是当我执行时,对于第一个循环,我正确地获取了数据,但第二次我收到了两倍值,如果循环运行第 n 次,结果我得到 n 次。
下面是代码!
List<HashMap<String, String>> value = new ArrayList<HashMap<String, String>>();
PreparedStatement selectStmt;
selectStmt = conn.prepareStatement("select * from ETR_INT_partc_DOCM where DOCM_TYP_CDE ='22'");
ResultSet result = selectStmt.executeQuery();
while (result.next()) {
HashMap<String, String> resultValues = new HashMap<String, String>();
resultValues.put("PARTC_ID", result.getString("PARTC_ID"));
resultValues.put("FILE_NME", result.getString("FILE_NME"));
resultValues.put("LOC_ID", result.getString("LOC_ID"));
resultValues.put("CRTE_DTE", result.getString("CRTE_DTE"));
resultValues.put("CRTE_BY", result.getString("CRTE_BY"));
value.add(resultValues);
System.out.println(value);
resultValues.clear();
}
genarateXML(value, sheet)
【问题讨论】:
-
为什么要调用:resultValues.clear()?您刚刚将该 HashMap 添加到值但随后将其清除,然后创建一个新实例?对我来说没有意义。这条线在我看来是错误的。
-
列表
values似乎是一个班级成员,每次通话前您都没有清空/清除它。 -
您希望 print
value打印出什么? -
您确定表格中没有重复行吗?你在 sysout 上得到了什么?
-
另外,真的不需要清除,因为您每次迭代都会创建一个新地图。
标签: java list collections map hashmap