Java 节点类在LinkedList类中做什么
我试图理解Java是如何创建节点的,即制作链表的。所以我检查了LinkedList.Java文件,在链表类中看到了一个内部节点类。那么这个内部节点类是否负责实际创建节点 另外,当我们使用这个类时,我们会说创建的对象是为LinkedList类还是为Node类Java 节点类在LinkedList类中做什么,java,Java,我试图理解Java是如何创建节点的,即制作链表的。所以我检查了LinkedList.Java文件,在链表类中看到了一个内部节点类。那么这个内部节点类是否负责实际创建节点 另外,当我们使用这个类时,我们会说创建的对象是为LinkedList类还是为Node类 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, C
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;
}
}
公共类链接列表
扩展抽象顺序列表
实现List、Deque、Cloneable、java.io.Serializable
{
私有静态类节点{
E项目;
节点下一步;
节点前置;
节点(上一个节点、E元素、下一个节点){
this.item=元素;
this.next=next;
this.prev=prev;
}
}
p.S这不是重复的,我试图理解node类在内置LinkedList类中做了什么,它是一个双链接列表。在另一个问题中,他们正在创建一个新的单链接列表。链接列表是一个线性数据结构,其中每个元素都是一个单独的对象。每个元素(我们称之为节点)列表的引用由数据和对下一个节点和上一个节点的引用组成。最后一个节点的引用为null 链表中的每个元素都是节点,实际上包含数据、上一个引用和下一个引用 由于链表支持对下一个元素的引用,因此我们需要有一个同时保存数据和引用的节点。
请参阅这种实现主要是因为在
链接列表中保留了节点
,或者增加了封装
基本上使用内部类(这里是节点类),特别是当该类除了在另一个类中使用之外没有其他用途时
例如,在此实现中,节点被声明为内部类,因为该节点只能存在于链表中。没有链表,单个节点将毫无用处
并且这个节点类只能在链表实例化之后立即实例化。因此,这支持了没有链表就不可能存在节点的概念
因此,通常将此链接列表
和节点绑定在一起,以便节点
如果不创建链接列表
就无法存在。Inner节点
类不负责创建节点。它是节点,或者实际上它代表链接列表中的节点。因为项可以是任意项hing和LinkedList
想要链接项目(知道每个项目的前面和后面是什么),它需要节点
抽象来保存项目和该信息
因此,LinkedList
创建节点并连接它们。它会保留指向第一个和最后一个节点的指针,以管理连接,并避免在迭代时出现循环。我的可能副本实际上会支持您的答案,但请注意您的答案与问题不一致。在问题中,我们有e两个链接,prev
和next
。因此每个节点都有三个项。很抱歉,我从未请求过基本数据结构方面的帮助。我想了解节点类在我理解的内置Linkedlist类中是如何工作的,但我的问题是,我找不到任何使用prev和next索引I的节点类调用在LinkedList类中,您是否正在查看LinkedList
的源代码?因为如果您正在查看,很难错过这些参考,而且我可能不理解您。如果您查看LinkedList
源代码,您可以清楚地看到新节点(…)
和first
和last
的用法。搜索典型的add
方法,然后查看调用的linkLast
。该方法包含所有案例。这正是我要找的答案。谢谢。你能告诉我linkLast中还有一件事吗final Node newNode=newnode(l,e,null);
那么这个新节点对象是节点类的对象吗?是的,它是。如果你不使用IDE,我建议你这样做。Eclipse是一个流行的选项。如果你使用像Eclipse这样的Java IDE,你可以按住Ctrl键并单击或只需鼠标悬停,看看每个元素都引用了什么。这一特性使这些关系变得很明显。