关于LinkedList的三种写法的效率

1.LinkedList<String> xxList = new LinkedList<String>();

// ...

Iterator<String> xxIterator = xxList.iterator();

while(xxIterator.hasNext()){

... = xxIterator.next();

//....

}

2.for(Object obj : List)

 

 

3.LinkedList<String> xxList = new LinkedList<String>();

// ...

for(int i = 0, i < xxList.size(), i++){

// ...

}

 

 

1和2实际是一样的,编辑器会把2编辑成1 

 

 

为什么3不好,因为是linkedlist ;从执行效率上来差别大 ,需要线性时间啊。 

 

O(size)这么多的时间。 

 

 

 

但是如果是linkedlist,用这样循环。就不能保证。 

 

 

 

是的,那个数组的ArrayList可以保证,LinkedList不行,它每次get(index)时,都会从表头开始。 

 

 

ArrayList get一个元素,是O。

而LinkedList get一个,需要O(n/2) 

 

这样再一循环,更不得了,如果数量级越大,差别越大。 

 

 

经常要在表中间修改元素时,linkedlist就比arraylist快了。 

 

他修改的时间是O 

 

arraylist的话,和位置有关,最优是O,也就是修改最后个,最坏。。。。。。 

窗体底端

原文地址:https://www.cnblogs.com/sail/p/2061926.html