希望這不是重複的。ArrayList內部實現
在此之前,我知道ArrayList並不是最好的選擇,但這只是好奇心。
簡單地說,我想知道ArrayList的實現。我看了看,發現它使用數組進行存儲。
對於數組,當你有:
int [] arr;
ARR指向數組的第一個元素,因爲它的類型是整數,編譯器知道在哪裏跳:
arr[2] => arr value + 2 * typeof(int) = address of arr[2]
現在,因爲ArrayList是無類型的,所以我想知道編譯器如何確定下一個項目在哪裏。我猜想有一個開銷,告訴數據是什麼,以便編譯器可以執行指針算術。
因此,ArrayList應該比任何其他類型的集合要慢,因爲它不能跳轉到數據,因爲它需要知道以前是什麼。這與LinkedList非常相似。
爲什麼不找你自己。有很多反編譯器會反編譯爲C#。反射器是一個。 – Oded
'typeof'與'sizeof'不一樣# – leppie
沒有得到你在說什麼跳躍? ArrayList使用對象數組。獲得第二項是'_items [1]' –