节点如何在java中运行?

时间:2013-03-31 01:12:46

标签: java linked-list nodes

好的,我有一个名为CarNode的课程:

public class CarNode {
    private Car car;
    private CarNode node;
}

和复制构造函数:

public CarList(CarList list) {
    CarNode element = list.head;
    CarNode node = new CarNode();
    this.head = node;

    while(element != null) {
        node.setCar(element.getCar());
        element = element.getNode();

        if(element != null) {
            node.setNode(new CarNode());
            node = element;
        }
    }
}

我不明白元素如何通过element.getNode()获取另一个汽车节点的值,但您需要编写node.setNode()和node.setCar ()节点 ...我很困惑......

1 个答案:

答案 0 :(得分:1)

CarNode有一个变量节点,它也是一个CarNode;这意味着CarNode对象可以包含对另一个CarNode对象的引用。 element是一个包含对CarNode的引用的变量。代码element = element.getNode()将元素对象中的引用分配给元素引用本身(如果元素中的节点为null,则为null)。

要在CarNode中的节点元素上设置值,请调用setNode(elementReference),从而产生语法node.setNode(new CarNode());

这是否回答了你的问题?我意识到你可能很难解释你想问什么,但实际上我们还没有一个非常明确的问题。

---附录

我会在这里回答你的评论,因为更多的评论在空间和格式方面都有限。

我认为你将“对象”与“对象引用”混为一谈。您可以将对象视为程序中某处的内存块,并将对象引用视为该块的地址。请考虑以下声明:

CarNode myCar = new CarNode();

您已使用new CarNode()创建了一个内存块,现在myCar引用了它。如果您现在要执行语句CarNode secondCar = myCar;,您将有第二个对同一对象的引用,即对同一块内存。对对象/内存块所做的任何更改都将反映在myCar和secondCar中。

你所谓的“复制构造函数”也让我感到困惑。我不确定你要做什么。通常,复制构造函数创建一个或多个对象,这些对象包含与原始对象或对象集相同的数据。首先,如果原始列表指针为null,则会在第一行引发NullPointerException。您创建了第一个节点并将其设置为头部,这很好,但node = element;语句是错误的。 node包含您要创建的节点以放入新列表,element包含原始列表中的元素。