复制Node类中的构造函数和克隆方法?

时间:2018-04-11 07:35:10

标签: java nodes clone copy-constructor singly-linked-list

这是我关于stackoverflow的第一个问题,所以如果我没有正确询问,请给我一些关于如何更恰当地提问的见解。

我对如何在Node类中创建复制构造函数和克隆方法感到困惑。我理解如何为一般对象制作副本和克隆(不实现克隆),但我仍然是LinkedLists的新人。

这是我到目前为止Node类的一部分代码(LinkedList类的内部类)

private class Node
{
    private Foo fooObject;
    private Node link;

    public Node()
    {
        fooObject= null;
        link = null;
    }

    public Node(Foo fooObject, Node link )
    {
        this.fooObject = fooObject;
        this.setLink(link);
    }

    public Node(Node originalNode)
    {
        this(originalNode.getCourse(), originalNode.getLink());
    }

    public Node clone()
    {
        return new Node(this);
    }

    public Foo getFoo() 
    {
        return fooObject;
    }

    public void setFoo(Foo fooObject) 
    {
        this.fooObject = fooObject;
    }

    public Node getLink() 
    {
        return link;
    }

    public void setLink(Node link) 
    {
        this.link = link;
    }
}

制作Node对象的副本对我来说仍然没有多大意义。在您实际使用Node对象时,这不会复制已链接到另一个节点的节点吗?副本和原始文件将链接到同一节点,但副本没有链接到它的节点?如果我感到困惑,请帮助我理解,我不明白这将如何使用。

为了澄清,我试图解决的问题是在实验室的学校里被问到的。 “使用内部类编写LinkedList类......内部类具有复制构造函数和克隆方法...确保复制构造函数和克隆方法生成深层复制...”

*编辑 只想澄清一些事情,被要求在BOTH中编写一个复制构造函数和克隆方法,并且要求内部Node类。我对这一点100%肯定,我没有时间要求技术援助澄清,因为有太多人在问她问题! *

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来您被要求在Linked List类上实现复制构造函数和clone方法...而不是Node类。

如果指定要进行深层复制,则克隆的链接列表对象应复制原始链接列表中的所有节点。

我建议你从:

开始
public MyLinkedList(MyLinkedList originalNode)