代码如下,从数据库查到记录后,放到map里,然后再把map放到list里,根据查询的条件可以查到2条记录,现在问题出现了。。。
第一次输出map = map1 list=[map1] i=0
第二次输出map = map2 list=[map2,map2] i=1
希望的结果是第二次输出 list=[map1,map2]
求解错出在哪里
while(rs.next()){
String archiveNo = rs.getString("archive_no");
String titleProper = rs.getString("title_proper");
String yearCode = rs.getString("year_code");
String fileCode = rs.getString("file_code");
map.put("archiveNo",archiveNo);
map.put("titleProper",titleProper);
map.put("yearCode",yearCode);
map.put("fileCode",fileCode);
System.out.println("map is "+map);
list.add(i,map);
System.out.println("list is "+list);
System.out.println("i = "+i);
i++;
}
------解决方案--------------------
把map的实例化放到while循环里面去,你放在外面,只指定了一个地址,所以后面put的时候把前面的覆盖了,所以你看到的都是最新的值。放到循环里面,你懂的。。
while (rs.next()) {
map = new HashMap();
}