用HashMap存数据,然后赋值给另外一个Map类型的变量,更新另外一个变量后,原始的变量的值也更新了。
目前,我有如下两个变量:
Map map1=new HashMap();
Map map2=new HashMap();
现在我把map2的值赋给map1,然后更新map1,由于HashMap好像是地址引用,所以map2的值也被更新了。
但是我希望,更新map1的值,不改变map2的值。哪位高手有好点的办法,来备份一个原始的值的,帮忙解决下。谢谢啦。
[解决办法]
不要把mp2 的值赋给 mp1,java 的 = 号是句柄赋值,你把 mp1 = mp2;后,两个都指向同一个值了,mp1 改变 mp2 也会改变。所以你要两个互不干扰,不能用 = 赋值,只能把里面的东西拿出来,再放到另一个里面。
[解决办法]
深度clone一份map
[解决办法]
HashMap map1 = new HashMap(); HashMap map2 = new HashMap(); for(Iterator it = map1.keySet().iterator() ; it.hasNext();){ String key = it.next().toString(); map2.put(key, map1.get(key)); }
[解决办法]
public static void main(String args[]) { HashMap map1 = null; HashMap map2 = new HashMap(); map2.put("1", "Hello");map2.put("2", "World"); map1 =(HashMap)map2.clone(); System.out.println(map1); System.out.println(map2); map1.put("1",(String)map1.get("1") + "World"); System.out.println(map1); System.out.println(map2); }