如果由ArrayList和LinkedList实现,下面代码的运行是什么?

时间:2013-11-03 21:46:55

标签: java list arraylist linked-list

 for (int i =0; i < n; i++){
        lst.add(lst.size()/2,3*i);          
    }

我在想for for循环将采用o(n)但是我不清楚add(j,t)如果使用ArrayList和LinkedList之间的区别是什么。 谢谢!

2 个答案:

答案 0 :(得分:3)

为了插入ArrayList的某个时隙k,找到k是O(1),但是你必须在k之后推回每个元素,即O(n)。但是,在ArrayList的末尾插入的是摊销的O(1),因为我们需要考虑需要调整数组大小的情况,所以要摊销。

对于LinkedList,除非您对位置k处的元素有引用,否则您需要遍历列表以查找所述位置,即O(n),而实际插入始终为O( 1)。

答案 1 :(得分:1)

LinkedList<E>

  

add(int index,E element)是O(n)

ArrayList<E>

  

add(int index,E element)是O(n - index)摊销,但O(n)   最坏情况(如上所述)

来源:

https://stackoverflow.com/a/322742/2498729