将为Java LinkedList分配多少空间?

将为Java LinkedList分配多少空间?,java,linked-list,Java,Linked List,我正在阅读Java LinkedList的源代码,注意LinkedList的构造函数如下: public LinkedList() { header.next = header.previous = header; } 如果将为该初始化分配多少空间,则标头似乎通过指向自身来创建无限递归。它在标头实例变量的初始化中分配单个节点: private transient Entry<E> header = new Entry<E>(null, null, null);

我正在阅读Java LinkedList的源代码,注意
LinkedList
的构造函数如下:

public LinkedList() {
    header.next = header.previous = header;
}

如果将为该初始化分配多少空间,则标头似乎通过指向自身来创建无限递归。

它在
标头
实例变量的初始化中分配单个节点:

private transient Entry<E> header = new Entry<E>(null, null, null);
private transient Entry header=新条目(null,null,null);

您引用的构造函数中的代码不分配内存;它只是设置指向初始状态的指针。没有“无限递归”,因为内部遍历适合这种情况。

它在初始化
头时分配一个节点
实例变量:

private transient Entry<E> header = new Entry<E>(null, null, null);
private transient Entry header=新条目(null,null,null);

您引用的构造函数中的代码不分配内存;它只是设置指向初始状态的指针。不存在“无限递归”,因为内部遍历满足这种情况。

我不是100%确定“多少空间”是什么意思,但如果你是指内存中会分配多少空间,那么最初只需要一个字段。即使头指针指向自身,所有指针仍然只指向内存中的单个地址空间。请注意,我甚至不确定它最初会指向任何地方,我想它们一开始只会被赋值为空值

一个简单的例子

String a = "Hello"
String b = a;
String c = b;

字符串“Hello”在内存中只出现一次,即使它有几个指向它的指针。

我不能100%确定“多少空间”是什么意思,但如果你是指内存中将分配多少空间,那么最初它只是一个字段。即使头指针指向自身,所有指针仍然只指向内存中的单个地址空间。请注意,我甚至不确定它最初会指向任何地方,我想它们一开始只会被赋值为空值

一个简单的例子

String a = "Hello"
String b = a;
String c = b;

字符串“Hello”在内存中只出现一次,即使它有几个指向它的指针。

谢谢波希米亚人,我想我明白你的意思了,存储是静态的,遍历是一种操作。操作可以是无限的,但存储只有一个。谢谢波希米亚人,我想我明白你的意思了,存储是静态的,遍历是一个操作。操作可以是无限的,但存储只有一个。