我读的Java的LinkedList的源代码,并注意的LinkedList
构造是这样的:将为Java LinkedList分配多少空间?
public LinkedList() {
header.next = header.previous = header;
}
多少空间将被分配到该初始化,头部似乎被指向创建无限递归本身。
我读的Java的LinkedList的源代码,并注意的LinkedList
构造是这样的:将为Java LinkedList分配多少空间?
public LinkedList() {
header.next = header.previous = header;
}
多少空间将被分配到该初始化,头部似乎被指向创建无限递归本身。
它在header
实例变量的初始化分配的单个节点:
private transient Entry<E> header = new Entry<E>(null, null, null);
在构造函数中的代码,以你指分配没有记忆;它只是设置指向初始状态的指针。没有“无限递归”,因为内部遍历迎合了这种情况。
我不是100%确定你的意思是“多少空间”,但如果你的意思是多少空间将分配在内存中 - 它最初只是一个字段。即使头指针指向自身,所有指针仍然只指向内存中的单个地址空间。请注意,我甚至不确定它最初会指向任何地方,我认为它们一开始只会被分配空值。
一个简单的例子。
String a = "Hello"
String b = a;
String c = b;
字符串“你好”只会在内存中出现一次,即使它有几个指向它的指针。
谢谢波希米亚人,我想我明白你的意思,存储是静态的,遍历是一种操作。操作可能是无限的,但存储只有一个。 –