我试图了解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类中做什么,这是一个双链表。在另一个问题中,他们正在创建一个新的单链表
答案 0 :(得分:1)
链表是一种线性数据结构,其中每个元素都是一个单独的对象。列表的每个元素(我们将其称为节点)包括数据和对下一节点和前一节点的引用。最后一个节点引用了null。
链表中的每个元素都是节点,它实际上包含数据,前一个和下一个引用。
由于链表支持对下一个元素的引用,我们需要有一个保存数据和引用的节点。
答案 1 :(得分:1)
这种实现主要是因为在Node
内保留了LinkedList
或增加了封装。
基本上使用内部类(此处为Node类),尤其是当该类除了在另一个单独的类中使用之外没有其他用途时。
例如,在此实现中,Node被声明为内部类,因为该节点只能存在于链表中。没有链表,单个节点就没用了。
此Node类只能在实例化链表后立即实例化。因此,这支持没有链接列表时没有节点的概念。
通常情况下,此LinkedList
和节点绑定在一起,因此Node
无法在不创建LinkedList
答案 2 :(得分:1)
内在Node
类不是负责创建节点。它 节点,或实际上它代表链表中的节点。由于项目可以是任何内容,并且LinkedList
想要链接项目(知道之前的内容和下一个项目的内容),因此需要Node
抽象来保留项目和那个信息。
因此LinkedList
创建节点并连接它们。它保留指向这些节点的第一个和最后一个的指针来管理连接,避免在迭代时进入圆圈。