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

Luc*_*cas 5 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
}
Run Code Online (Sandbox Code Playgroud)

我想在遍历整个 List 时不需要获取特定元素,因此应该可以实现某种性能大致相同的循环实现。虽然我不知道for这个例子究竟是如何实现的,所以我不能确定是否是这样。

Ray*_*111 1

当使用 foreach 时,它们都以相同的速度进行迭代,即 O(1)。欲了解更多信息,请阅读这篇文章。