LinkedList插入数据效率和ArrayList对比

文章比较了ArrayList和LinkedList在尾部、首部和中间插入数据时的性能差异。尾部插入时,ArrayList在数据量大时表现更好;首部插入时,LinkedList更快;中间插入时,LinkedList效率较低。当数据量小时,LinkedList在中间插入有优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结论

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相比之下就耗时更短了。移动指针次数也少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值