写程序时写了这样一段代码,发现最后vals集合中所有的值都是相同的,后来才发现这样写,只是将对象的引用传给放在了list中,当该引用指向的对象发生变化时,对应的list里的内容也就跟着发生变化了。
List<A> list = find(sql);//获取对象为A的集合
Map<String,Object> val = new HashMap<String,Object>();
List<Map<String,Object>> vals = new ArrayList<Map<String,Object>>();
for(A a : list){
val.put('name',a.getName());
vals.add(val);
}
system.out.println(vals.toString);
//修改后代码,每次循环都重新new一个map对象,得到的结果就正常了……
List<A> list = find(sql);//获取对象为A的集合
List<Map<String,Object>> vals = new ArrayList<Map<String,Object>>();
for(A a : list){
Map<String,Object> val = new HashMap<String,Object>();
val.put('name',a.getName());
vals.add(val);
}
system.out.println(vals.toString);