2015-03-02 175 views
0

我正在实现我的linkList的克隆,它是从库中没有LinkList写入的。 我的代码如下所示:如何克隆(深层拷贝)java linkList

public class myNode implements Cloneable { 

    private class1 obj1; 
    private myNode next; 
    //---- some immutables.... 
    public object clone(){ 
     try { 
      myNode cloneNode = super.clone(); 
     } 
     catch (ClassNotSupported ex){ 
     } 
     cloneNode.obj1 = this.obj1.clone();//This is implemented. 
     cloneNode.next = this.next.clone(); 
     return cloneNode; 
    } 
} 

现在我的克隆方法的结果出来是一个计算器。 例如。如果我的MYNODE链表的样子:

“AA” - > “BB” - > “CC” - > “DD” - > “空”

然后,一旦我打电话克隆在这里没有显示的linkList的头部(在我的测试函数中),然后将linkList螺旋线克隆成无限循环,如下所示:

“aa” - >“bb” - > “aa” - >“bb” - >“aa” - > .....

Wh我在这里搞乱了。有人可以请帮助。

+0

你不应该被前'cloneNode.next = this.next.clone检查''为null' next'( );'? – Kishore 2015-03-02 07:24:00

+0

我正在检查它。不写在这里保持简单。 – 2015-03-02 07:26:35

+2

即使您在连续节点上递归调用'clone()',如果有很多节点,您将获得stackoverflow例外。 – Kishore 2015-03-02 07:28:39

回答

0

存在复制方法的问题,您可以直接编辑代码:

public object clone(){ 
     try { 
      myNode cloneNode = (myNode)super.clone(); 
       cloneNode.obj1= class1.clone(); 
     } 
     catch (ClassNotSupported ex){ 
     } 
     return cloneNode; 
    }