获取ArrayList的第一个元素比获取其他元素需要更长的时间

时间:2016-04-24 14:59:27

标签: java performance arraylist

我想测量获取ArrayList元素的时间。我知道使用ArrayList我们可以在恒定时间内获取任何元素。我试着检查这个编写代码,但它返回第一个元素的错误结果。

我的代码:

private long getGetTime(int position) {
    long elapsedTime = 0;
    long start = System.nanoTime();


    list.get(position);

    long end = System.nanoTime();
    elapsedTime = end - start;

    return elapsedTime;
}
preapareStructure();
System.out.println("read 0, time: " + getGetTime(0));
System.out.println("read size/2, time: " + getGetTime(list.size()/2));
System.out.println("read size-1, time: " + getGetTime(list.size()-1));

这会返回这样的内容:

read 0, time: 10243
read size/2, time: 843
read size-1, time: 843

1 个答案:

答案 0 :(得分:1)

ArrayList有一个后备阵列,它将在第一次访问时被购买到硬件缓存中。因此缓存现在被认为是热身。然后将从缓存中检索第一个之后的所有访问,这显然会更快。