ArrayList和LinkedList的区别?

答:

一:针对结构而言

二:在不同应用场景下的效率不同

2.1查询数据

2.2添加效率

①往集合中间插入数据时ArrayList比LinkedList慢

②ArrayList正好扩容的时候添加数据要比LinkedLit慢

2.2删除数据


一:针对结构而言

ArrayList底层维护的是一个动态数组,LinkedLisd底层维护的是一个双向链表,它们之间的不同主要也是数组和链表的特征比较,根据底层数据结构不同,他们所适用的场景也不同,ArrayList更适合随机查找,LinkedList更适合添加和删除

二:在不同应用场景下的效率不同

大多数情况可以说是“ArrayList查询快,LinkedList添加删除快”,但严格来说并不是如此

2.1查询数据

ArrayList比LinkedList快,原理是:

ArrayList是数据有下标标记数据位置的,查询时直接返回对应的数组下标数据即可

LinkedList是链表,没有对数据进行位置标记,每次获取固定位置的数据都需要循环遍历链表

总结:虽然会出现上面的情况,可是因为ArrayList可以使用下标直接获取数据,所以在使用查询的时候一般选择ArrayList,而进行删除和增加时,LinkedList比较方便,所以一般还是使用LinkedList比较多。

2.2添加效率

是有前提条件的LinkedList在两种情况下插入数据要比ArrayList快

①往集合中间插入数据时ArrayList比LinkedList慢

因为ArrayList往集合中间插入数据要做两件事,把之前的数据挪开赋值到新的数组位置,然后把需要插入的数据插入到数组对应的位置

当LinkedList在插入时,需要移动指针到指定节点,才能开始插入,一旦要插入的位置比较远,LinkedList就需要一步一步的移动指针,直到移动到插入位置,这就解释了,为什么节点值越大,时间越长,因为指针移动需要时间,所以插入位置的选取对LinkedList有很大的影响。

而ArrayList是数组结构,可以直接根据下标直接获得位置,这就省去了查找特定节点的时间,所以对ArrayList的影响不是特别大。

②ArrayList正好扩容的时候添加数据要比LinkedLit慢

因为ArrayList维护的是一个数组,所以当容量到达阈值时就会进行扩容,然后会重新分配数据的位置,当数组扩容的时候速度也要比LinkedList慢

2.3删除数据

ArrayList要比LinkedList慢,原理同往集合中间插入数据一样,ArrayList每次删除数据都要对数组进行重组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值