迭代时,数组(或ArrayList)和LinkedList是否执行相同的操作?

时间:2018-04-08 22:58:55

标签: java performance

我知道数组在获取和设置方面更快,而LinkedLists更擅长添加和删除元素,但在迭代时呢?一个更“传统”的for(i=0;i<intList.size();i++)肯定会使LinkedLists更慢,因为你必须每次都在索引i处获取元素。但是,如果我使用for(int i : intList)怎么办?它是如何在这个实例的引擎下工作的?例如:

LinkedList<Integer> intList = new LinkedList();
/*
populate list...
*/
for (int i : intList) {
    //do stuff
}

我认为在遍历整个List时不需要获取特定元素,因此应该可以使用某种类型的循环实现,其中性能大致相同。虽然我不知道这个例子如何实现for的确切方式,所以我无法确定是不是这样。

1 个答案:

答案 0 :(得分:1)

当使用foreach时,它们都以相同的速度迭代,O(1)。有关详细信息,请阅读this post