ArrayList如何在恒定时间内检索数据?

nei*_*eil 3 java arraylist

一个面试问题,我无法回答,也无法在线找到任何相关答案。

假设一个arraylist中有10000个数据,我想找到当前位于第5000个索引上的数字,arraylist如何知道这些索引并以恒定的时间给出结果?

因为如果遍历数组列表以查找数据,则将花费线性时间而不是恒定时间。

提前致谢。

rge*_*man 5

支持的存储ArrayList是一个数组。无论是存储原始值还是对象引用,数组中的所有对象在内存中的顺序都是连续的。

对于数组访问,编译器所需要做的就是根据初始地址和所需索引(即O(1))计算正确的内存地址的指令。然后,它可以直接转到该计算出的地址。没有遍历,因此不是O(n)。