今天遇到一个问题,给List<Map<String, String>>存放map的时候
先给map赋值,然后存入list中,最后再clear掉map,便于下次循环赋新的值
public class Test {
public static void main(String args[]) {
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Map<String, Object> map = new HashMap<String, Object>();
for(int i=0;i<5;i++) {Object>();
//给map赋新的值
map.put("a", i);
list.add(map);
//把map赋值给list之后clear
map.clear();
}
System.out.println(list);
}
但是最后List里面的map全部都被clear掉了,我猜测是因为list.add()方法实际上存的是map的地址,所以map一直在被clear,并没有按照预想的赋值给list。
所以改成下面这样,每次循环都实例化一个新的map,这样连clear()都省去了。
public class Test {
public static void main(String args[]) {
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
for(int i=0;i<5;i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("a", i);
map.put("b", i);
list.add(map);
}
System.out.println(list);
}
受到了下面这篇博客的启发:
https://blog.csdn.net/javaxiaobaismc/article/details/98032700