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

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一个内存地址,这样把数据放到各自的内存地址里,互不影响。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值