转hashmap浅拷贝和深拷贝--不错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转hashmap浅拷贝和深拷贝--不错相关的知识,希望对你有一定的参考价值。

原文网址:http://canofy.iteye.com/blog/258790

java深拷贝与浅拷贝

  1. //浅拷贝与深拷贝  
  2.         //浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。  
  3.         //换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。  
  4.         //深拷贝:被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。  
  5.         //那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。  
  6.         //换言之,深复制把要复制的对象所引用的对象都复制了一遍。  
  7.         //1、直接赋值(字符串外都属于浅拷贝)  
  8.         //2、使用构造函数(深拷贝)  
  9.         //3、使用clone()方法(深拷贝)  
  10.           
  11.         //字符串(不理解无colne()方法)  
  12.         String s="sss";  
  13.         String t=s;   //深拷贝  
  14.         String y=new String(s); //深拷贝  
  15.         System.out.println("s:"+s+" t:"+t+" y:"+y);  
  16.         t="ttt";  
  17.         y="yyy";  
  18.         System.out.println("s:"+s+" t:"+t+" y:"+y);  
  19.           
  20.         //数组   
  21.         String[] ss={"111","222","333"};  
  22.         String[] tt=ss; //浅拷贝  
  23.         String[] ww=(String[])ss.clone();//深拷贝  
  24.         System.out.println("ss:"+ss[1]+" tt:"+tt[1]+" ww:"+ww[1]);  
  25.         tt[1]="2t2";  
  26.         ww[1]="2w2";  
  27.         System.out.println("ss:"+ss[1]+" tt:"+tt[1]+" ww:"+ww[1]);  
  28.           
  29.           
  30.         //list列表          
  31.         ArrayList a=new ArrayList();  
  32.         for(int i=0;i<10;i++){  
  33.             a.add(String.valueOf(i+1));  
  34.         }  
  35.         ArrayList b=a;//浅拷贝  
  36.         ArrayList c=new ArrayList(a);//深拷贝  
  37.         ArrayList d=(ArrayList)a.clone();//深拷贝  
  38.         System.out.println("a:"+a.get(1)+" b:"+b.get(1)+" c:"+c.get(1)+" d:"+d.get(1));  
  39.         b.set(1, "bbb");  
  40.         c.set(1, "ccc");  
  41.         System.out.println("a:"+a.get(1)+" b:"+b.get(1)+" c:"+c.get(1)+" d:"+d.get(1));  
  42.           
  43.         //HashMap  
  44.         HashMap h=new HashMap();  
  45.         h.put("1", "hhh");  
  46.         HashMap m=h;//浅拷贝  
  47.         HashMap p=new HashMap(h);//深拷贝  
  48.         HashMap n=(HashMap)h.clone();//深拷贝  
  49.         System.out.println("h:"+h.get("1")+" m:"+m.get("1")+" p:"+p.get("1")+ " n:"+n.get("1"));  
  50.         m.put("1", "mmm");  
  51.         p.put("1","ppp");  
  52.         n.put("1", "nnn");  
  53.         System.out.println("h:"+h.get("1")+" m:"+m.get("1")+" p:"+p.get("1")+ " n:"+n.get("1"));  

以上是关于转hashmap浅拷贝和深拷贝--不错的主要内容,如果未能解决你的问题,请参考以下文章

NumPy之浅拷贝和深拷贝

java浅拷贝和深拷贝

JS-[浅拷贝和深拷贝]

c/c++/c++11 浅拷贝和深拷贝

c++中的拷贝是怎么回事,请举例说明浅拷贝和深拷贝?

Python中的赋值,浅拷贝和深拷贝的区别