Java 复制HashMap,但有两个更改
我正在使用一个复制的HashMap,但是当我更改第二个HashMap的值时,第一个HashMap得到的值也会更改 这是我的代码:Java 复制HashMap,但有两个更改,java,hashmap,processing,Java,Hashmap,Processing,我正在使用一个复制的HashMap,但是当我更改第二个HashMap的值时,第一个HashMap得到的值也会更改 这是我的代码: HashMap firstMap=newhashmap(); //用值填充第一个HashMap。 System.out.println(firstMap.get(“test”).height);//返回16 //然后,我复制HashMap: HashMap secondMap=新的HashMap(firstMap); secondMap.forEach((名称、图像)
HashMap firstMap=newhashmap();
//用值填充第一个HashMap。
System.out.println(firstMap.get(“test”).height);//返回16
//然后,我复制HashMap:
HashMap secondMap=新的HashMap(firstMap);
secondMap.forEach((名称、图像)->{
图像。调整大小(1,1);
//这将图像的高度和宽度设置为1
//但是,从逻辑上讲,它必须只更改SECONDMap中的值,而不是FIRSTMap中的值
});
System.out.println(firstMap.get(“test”).height);//返回1
//它返回1,但我没有更改第一个映射的值??
所以我不明白发生了什么以及如何修复它?你所做的是所谓的浅层复制,它制作一个新的哈希映射,指向第一个哈希映射的键和值,这就是为什么当一个被更改时,另一个会感觉到更改
您需要做的是一个深度复制,可以通过迭代第一个哈希映射并逐个处理所有数据来完成
HashMap<String, processing.core.PImage> secondMap = new HashMap<String, processing.core.PImage>();
for (Map.Entry<String, processing.core.PImage> entry : firstMap.entrySet())
{
secondMap.put(entry.getKey(), entry.getValue());
}
HashMap secondMap=newhashmap();
for(Map.Entry:firstMap.entrySet())
{
secondMap.put(entry.getKey(),entry.getValue());
}
复制地图不会复制地图中存储的内容:只需将相同的实例放入不同的地图实例中即可。换言之:你已经做了一个浅拷贝。你想做深拷贝而不是浅拷贝吗?如果我可以问的话,你在写什么样的代码?这是一个将处理作为“另一个库”使用的Java程序吗?因为如果是这样的话,这不是一个处理问题,而是一个关于深度复制Java数据结构的普通问题代码>哼,一个ArrayList有两个参数类型?@Ayfri抱歉修正了,我没有仔细看就复制了剪下来的。