如何实现深度复制,有人可以贴下代码并解释一下吗?谢谢。。

问题描述

浅复制:只复制基本数据类型。深复制:复制包括引用在内的所有内容。这个没搞错吧。。。。

解决方案

解决方案二:
看看这个帖子你们不会是同学吧?
解决方案三:
对test的深拷贝,等于说重新生成了一个test的对象,浅拷贝的话,直接super.clone就行了或者returnthispublicclassTest{privateinttotal;privateTesttest;publicTestgetTest(){returntest;}publicvoidsetTest(Testtest){this.test=test;}publicintgetTotal(){returntotal;}publicvoidsetTotal(inttotal){this.total=total;}publicObjectclone(){Testclone=newTest();clone.setTotal(this.getTotal());clone.setTest(this.getTest());returnclone;}}

附带一个二叉树的深拷贝简单代码:/***二叉树深拷贝*@paramnode*@paramtreeNode*/publicvoidcopy(BinTreeNode<T>node,BinTreeNode<T>treeNode){if(node==null){return;}else{treeNode.setValue(node.getValue());if(node.getLeftNode()!=null){BinTreeNode<T>tempNode=newBinTreeNode<T>();treeNode.setLeftNode(tempNode);copy(node.getLeftNode(),tempNode);}if(node.getRightNode()!=null){BinTreeNode<T>tempNode=newBinTreeNode<T>();treeNode.setRightNode(tempNode);copy(node.getRightNode(),tempNode);}}}

解决方案四:
该回复于2010-11-16 09:25:04被版主删除

时间: 2024-08-01 14:06:10

如何实现深度复制,有人可以贴下代码并解释一下吗?谢谢。。的相关文章

JavaScript 数组的深度复制解析_javascript技巧

对于javascript而言,数组是引用类型,如果要想复制一个数组就要动脑袋想想了,因为包括concat.slice在内的函数,都是浅层复制.也就是说,对于一个二维数组来说,用concat来做复制,第二维的数组还是引用,修改了新数组同样会使旧数组发生改变.     于是乎,想要写一个深度复制的函数,来帮助做组数的深度复制. 一般情况下,使用 "=" 可以实现赋值.但对于数组.对象.函数等这些引用类型的数据,这个符号就不好使了. 1. 数组的简单复制 1.1 简单遍历 最简单也最基础的方

JavaScript深度复制(deep clone)的实现方法_javascript技巧

在代码复用模式里面有一种叫做"复制属性模式"(copying properties pattern).谈到代码复用的时候,很有可能想到的是代码的继承性(inheritance),但重要的是要记住其最终目标--我们要复用代码.继承性只是实现代码复用的一种手段,而不是唯一的方法.复制属性也是一种复用模式,它跟继承性是有所不同的.这种模式中,对象将从另外一个在对象中获取成员,其方法是仅需将其复制即可.用过jQuery的都知道,它有一个$.extend()方法,它的用途除了扩展第三方插件之外,

ASP.NET深度复制和浅度复制分析_实用技巧

本文深入浅出的分析了ASP.NET深度复制和浅度复制.分享给大家供大家参考.具体分析如下: 之前一直没有搞清楚深度复制和浅度复制的区别到底在哪里,今天彻底把这个东西弄懂了,写出来与到家共勉. 如果大家不懂值类型和引用类型的区别,请先看http://www.jb51.net/article/57471.htm,本来想自己写的,但刚好看到了这篇写的非常全面,就不自己写了. 大家都知道Object是所有类共同的基类,其有个方法是MemberwiseClone(),其用途为 我们可以通过这个方法来达到浅

javascript数组的深度复制例子

一般情况下,使用 "=" 可以实现赋值.但对于数组.对象.函数等这些引用类型的数据,这个符号就不好使了. 1. 数组的简单复制 1.1 简单遍历 最简单也最基础的方式,自然是循环处理.示例: function array_copy(arr) {     var out = [], i, len;     if (out[i] instanceof Array === false){      return arr;     }     for (i = 0, len = arr.len

tomcat eclipse启动tomcat失败了,刚开始学这个,希望有人帮忙看下

问题描述 tomcat eclipse启动tomcat失败了,刚开始学这个,希望有人帮忙看下 刚开始在eclipse里面安装tomcat,tomcat放在F盘下,前面添加的步骤都按照网上教程弄了,应该没有什么错误,不过在写好代码,准备要运行的时候,不知道如何操作, 下面几张图片 不知道哪里错误了,弹出红框. 解决方案 你装的哪种tomcat?集成到eclise的tomcat不需要安装,解压后在Windows-->perferences配置一下就好了.需要安装的那个它启动是通过目录下面有个moni

DataTable复制数据,深度复制

/**/ /// <summary> /// 复制数据,深度复制 /// </summary> /// <param name="dataSourceRow">数据源,待复制的数据</param> /// <param name="dataStruct">数据结构/表结构</param> /// <returns>处理后的DataTable</returns> publi

有人懂fortran语言吗?可以帮我看下代码,写成c语言吗?十分感谢!

问题描述 有人懂fortran语言吗?可以帮我看下代码,写成c语言吗?十分感谢! FUNCTION XTERP(XCC,X,Y,NDEG,NPTS,DINT,IER) XTR 0001 C XTR 0002 C FUNCTION PERFORMS NEWTONS INTERPOLATION FOR DISCRETE DATA XTR 0003 C AS A FUNCTION OF ONE VARIABLE XTR 0004 C XTR 0005 C WHERE XC - INDEPENDENT

c-这个马踏棋盘哪里错了?有人帮忙看下吗?

问题描述 这个马踏棋盘哪里错了?有人帮忙看下吗? #include"stdio.h" int count=1; int dx[8]={-2,-1,1,2,-2,-1,1,2}; int dy[8]={-1,-2,-2,-1,1,2,2,1}; void f1(int a[][8],int x,int y){ int i,j; printf("count=%dn",count); if(count==65){ for(i=0;i for(j=0;j printf(&q

求助-哪位好心人帮我看下代码吧,深度遍历搜索图的,有点长,麻烦看下吧

问题描述 哪位好心人帮我看下代码吧,深度遍历搜索图的,有点长,麻烦看下吧 //深度遍历搜索图 #include #include #define MAX_VERTEX_NUM 3 typedef enum {DG,DN,UDG,UDN} GraphKind;//图的类型 typedef int OtherInfo; //弧的信息,如权 typedef char VertexData;//图结点的内容为char typedef struct ArcNode { int adjvex; struct