我讀的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;
字符串「你好」只會在內存中出現一次,即使它有幾個指向它的指針。
謝謝波希米亞人,我想我明白你的意思,存儲是靜態的,遍歷是一種操作。操作可能是無限的,但存儲只有一個。 –