读书人

用HashMap存数据然后赋值给另外一个

发布时间: 2012-05-12 15:39:31 作者: rapoo

用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
[解决办法]

Java code
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));        }
[解决办法]
Java code
    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);    } 

读书人网 >Java相关

热点推荐