list组合map处理数据 list对象的内部属性发生改变时 map中的value随着改变

在开发时需要对表数据进行处理 写了以下代码:在这里插入图片描述
却发现在执行name.put后,明明没有对List对象listname进行操作她却有了数据,导致后续逻辑报错(断点测试图在文章末尾)

再用以下代码进行测试:

public static void main(String[] args) {
		List<Map> list = new ArrayList();
		Map map = new HashMap();
		list.add(map);
		map.put("aa", 11);
		map.put("bb", 11);
		map.put("cc", 11);
		list.forEach(m->System.out.println(m));
	}

输出结果:
在这里插入图片描述
经过上网搜索得知原因:
map除了基本类型是正儿八经的值传递,其余的都是引用地址传递
由于map的value存储的引用地址传递(list),所以当list对象的内部属性发生改变时,map中的value随着改变

猜你喜欢

转载自blog.csdn.net/Beatingworldline/article/details/113477407