关于java:Nodeed类在LinkedList类中做什么

What does node class do in LinkedList class

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

当我们使用此类时,还会说创建的对象是用于LinkedList类还是用于节点类?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 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类(一个双链表)中节点类在做什么,在另一个问题中,他们正在创建一个新的单链表

  • 从头开始创建LinkedList类的可能重复


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

enter

  • 我知道那部分,但是我的问题是我找不到在LinkedList类中具有上一个和下一个索引的对Node类的任何调用
  • 您是否在查看LinkedList的来源?因为如果您是您,那么很难错过这些参考资料,而且我可能不太了解您。如果您查看LinkedList源,则可以清楚地看到new Node<>(...)以及firstlast的用法。搜索典型的add方法,然后查看被调用的linkLast。该方法包含所有情况。
  • 这就是我一直在寻找的答案。谢谢。您能在linkL上再告诉我一件事吗,我们有final Node<E> newNode = new Node<>(l, e, null);,所以这个newNode对象是Node类的对象吗?
  • 是的。如果您不使用IDE,建议您这样做。 Eclipse是一个流行的选择。如果使用类似Eclipse的Java IDE,则可以按住Ctrl键单击或简单地将鼠标悬停在鼠标上,以查看每个元素所指的含义。该功能使这种关系显而易见。


这种实现主要是由于LinkedListNode的保留或增强的封装。

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

例如,在此实现中,节点被声明为内部类,因为该节点只能存在于链表中。如果没有链表,则单个节点将无效。

并且只能在实例化链表之后立即实例化此Node类。因此,这支持以下概念:没有链接列表就无法存在节点。

因此,通常将此LinkedList和Node绑定在一起,以便在不创建LinkedList

的情况下无法存在Node


链表是一个线性数据结构,其中每个元素都是一个单独的对象。列表的每个元素(我们称其为节点)都由数据以及对下一个节点和上一个节点的引用组成。最后一个节点引用了null。

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

由于链表支持对下一个元素的引用,因此我们需要有一个同时包含数据和引用的节点。

引用链接列表

  • 我实际上会支持您的回答,但是请注意,您的回答与问题不符。在问题中,我们有两个链接prevnext。因此,每个Node都有三个项目。
  • 很抱歉,但我从未要求基本数据结构方面的帮助。我想了解Node类在内置的Linkedlist类中的工作方式