节点类在LinkedList类中做了什么

时间:2015-07-02 07:56:59

标签: java

我试图了解Java如何创建节点,即创建链表。所以我检查LinkedList.java文件,我在链表类中看到了一个内部节点类,所以这个内部节点类负责实际创建节点?

当我们使用这个类时,我们会说创建的对象是LinkedList Class还是Node Class?

 public class LinkedList<E>
  extends AbstractSequentialList<E>
  implements List<E>, Deque<E>, Cloneable, java.io.Serializable
  {

private static class Node<E> {
    E item;
    Node<E> next;
    Node<E> prev;
    Node(Node<E> prev, E element, Node<E> next) {
        this.item = element;
        this.next = next;
        this.prev = prev;
    }
}

P.S这不是重复我试图理解节点类在内置的LinkedList类中做什么,这是一个双链表。在另一个问题中,他们正在创建一个新的单链表

3 个答案:

答案 0 :(得分:1)

链表是一种线性数据结构,其中每个元素都是一个单独的对象。列表的每个元素(我们将其称为节点)包括数据和对下一节点和前一节点的引用。最后一个节点引用了null。

链表中的每个元素都是节点,它实际上包含数据,前一个和下一个引用。

由于链表支持对下一个元素的引用,我们需要有一个保存数据和引用的节点。

参考Linked List

答案 1 :(得分:1)

这种实现主要是因为在Node内保留了LinkedList或增加了封装。

基本上使用内部类(此处为Node类),尤其是当该类除了在另一个单独的类中使用之外没有其他用途时。

例如,在此实现中,Node被声明为内部类,因为该节点只能存在于链表中。没有链表,单个节点就没用了。

此Node类只能在实例化链表后立即实例化。因此,这支持没有链接列表时没有节点的概念。

通常情况下,此LinkedList和节点绑定在一起,因此Node无法在不创建LinkedList

的情况下存在

答案 2 :(得分:1)

内在Node类不是负责创建节点。它 节点,或实际上它代表链表中的节点。由于项目可以是任何内容,并且LinkedList 想要链接项目(知道之前的内容和下一个项目的内容),因此需要Node抽象来保留项目和那个信息。

enter image description here

因此LinkedList创建节点并连接它们。它保留指向这些节点的第一个和最后一个的指针来管理连接,避免在迭代时进入圆圈。