nob*_*alG 3 c++ java linked-list object-reference
我正在浏览LinkedList并看到了Java中的实现.回到我尝试并实现链接列表的日子里,它有指针和地址以及大量的努力工作.使用Java,实现更容易,但仍然需要我做一些事情.我从链接列表中了解到链接列表,其中1,2,3,4是链表的节点.

但是在java中,我遇到的代码让我将LinkedList视为下图.
Java中链表的实现代码如下,
class LinkedListNode
{
LinkedListNode nextNode = null;//consider this member variable
int data;
public LinkedListNode(int data)
{
this.data = data;
}
void appendItemToLinkedList(int newData)
{
LinkedListNode end = new LinkedListNode(newData);
LinkedListNode temp = this;
while (temp.nextNode != null) { temp = temp.nextNode; }
temp.nextNode = end;
}
}
Run Code Online (Sandbox Code Playgroud)
和
public static void main(String[] args)
{
LinkedListNode list = new LinkedListNode(10);
list.appendItemToLinkedList(20);
list.appendItemToLinkedList(30);
list.appendItemToLinkedList(40);
list.appendItemToLinkedList(50);
list.appendItemToLinkedList(60);
}
Run Code Online (Sandbox Code Playgroud)
在图中,您可以清楚地看到节点对象位于其他节点对象内.它真的是一个链表.或者是一个容纳其他容器的父容器,依此类推?
第二个图是因为认为一个列表包含另一个列表(如果LinkedList类型是基本类型那样).
当您考虑LinkedList 引用另一个时,会产生第一个图表.
因为LinkedList是引用类型而不是基本类型,所以该nextNode字段不存储完整LinkedList的就地,而只存储一个引用.因此,您的第一个图是正确的,即使在Java中也是如此.
也可以看看:
另一个问题是,"原始类型和引用类型之间有什么区别?"
Java语言规范:第4.1章"类型和值的种类"