Java:对于迭代,通用ArrayLists比LinkedLists更快吗?

时间:2017-11-08 03:39:44

标签: java arraylist time-complexity

对于特定类型的ArrayList,我们可以在ArrayList中找到对象(特定类型的)的大小,并直接在O(1)中的任何索引处访问该对象。这是因为对象引用存储在ArrayList中的连续内存块中,因此通过跳过object_size * index内存位置,我们访问所需对象的引用所在的内存位置。
然而,在LinkedList中,我们必须遍历每个对象,直到我们到达所需的对象。

对于包含不同类型对象(具有不同大小)的通用ArrayList,是否在O(1)中完成get(index i)?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:6)

你是在误解下工作的。对象不存储在数组中,只有对象的引用(即指针)存储在数组中。对象本身就在堆上。因此,通过索引查找ArrayList中的特定对象始终为O(1),无论其包含什么内容,LinkedList将为O(n)