您的位置:首页 > 编程语言 > Java开发

Java中循环添加的值一样的问题

2012-08-06 11:30 239 查看
for(HashMap<String, ?> info:list){
HashMap<String, Object> infoq = new HashMap<String, Object>();
System.out.println("info name:"+info.get("name"));
for(StudentVirtual virtual:virtuals){
String DataIndex = virtual.getDataIndex();
infoq.put(DataIndex, info.get(DataIndex));
infoq.put(DataIndex+"_header", virtual.getHeader());
infoq.put(DataIndex+"_width", virtual.getWidth());
infoq.put(DataIndex+"_flex", virtual.isFlex());
}

System.out.println("list2 add:"+infoq.get("name"));
list2.add(infoq);

}

如果把

HashMap<String, Object> infoq = new HashMap<String, Object>();
放到循环外面,则list2中的内容完全一样

因为在放在for循环之前只是指定了一个内存地址,每次都在一个内存地址上覆盖原来的数据,所以你得到的永远是循环最后一次的值。

放在循环里是每循环一次就NEW一个内存地址,这样把数据放到各自的内存地址里,互不影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: