希望这不是重复的。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]' –