LinkedList插入数据效率和ArrayList对比

2023-02-09  本文已影响0人  在岁月中远行

1 在尾部插入数据时,数据量较小时LinkedList比较快,因为ArrayList要频繁扩容,当数据量较大时ArrayList比较快,因为ArrayList扩容是当前容量1.5倍,大容量扩一次就能提供很多空间,而LinkedList每次add时候会new Node当数据量大时,这里就会耗时较多了。

2 在首部插入数据时,LinkedList较快,因为LinkedList遍历插入位置花费时间很小,而ArrayList需要将原数组所有元素进行一次System.arraycopy。

3 插入越往中间,LinkedList效率越低,因为它遍历获取插入位置是从两端往中间搜,index越往中间遍历越久,因此ArrayList的插入效率可能比LinkedList高。

4 插入位置越往后,ArrayList效率越高,因为数组需要复制后移的数据少了,那么System.arraycopy就快了。因此在首部插入数据LinkedList效率比ArrayList高,在尾部插入数据ArrayList效率比LinkedList高。

在尾部插入数据

结论:尾部插入:ArrayList优于LinkedList

在首部插入数据

结论:首部插入,LinkedList远比ArrayList快

在中间插入数据

结论:中间插入,LinkedList比ArrayList慢

当数据量小时,往中间插入数据,LinkedList性能大于ArrayList。

数据量小时,ArrayList要频繁扩容,而LinkedList的add()中new Node相比之下就耗时更短了。移动指针次数也少。

上一篇下一篇

猜你喜欢

热点阅读