希望这不是重复的。
在任何事情之前,我知道 ArrayList 不是最好的选择,但这只是好奇。
简单地说,我想知道 ArrayList 的实现。我查看并发现它使用数组进行存储。
对于数组,当你有:
int [] arr;
arr 指向数组的第一个元素,因为它是整数类型,编译器知道跳转到哪里:
arr[2] => arr value + 2 * typeof(int) = address of arr[2]
现在,由于 ArrayList 是无类型的,我想知道编译器如何确定下一项在哪里。我猜想有一个开销告诉数据是什么,以便编译器可以执行指针算术。
因此,ArrayList 应该比任何其他类型化集合慢得多,因为它不能只跳转到数据,因为它需要知道之前的内容。这与 LinkedList 非常相似。