Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 节点类在LinkedList类中做什么_Java - Fatal编程技术网

Java 节点类在LinkedList类中做什么

Java 节点类在LinkedList类中做什么,java,Java,我试图理解Java是如何创建节点的,即制作链表的。所以我检查了LinkedList.Java文件,在链表类中看到了一个内部节点类。那么这个内部节点类是否负责实际创建节点 另外,当我们使用这个类时,我们会说创建的对象是为LinkedList类还是为Node类 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, C

我试图理解Java是如何创建节点的,即制作链表的。所以我检查了LinkedList.Java文件,在链表类中看到了一个内部节点类。那么这个内部节点类是否负责实际创建节点

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

 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键并单击或只需鼠标悬停,看看每个元素都引用了什么。这一特性使这些关系变得很明显。