ArrayList和LinkedList的区别!(!全网最全,没有之一!)==========第一步

1.ArrayList和LinkedList都实现了List接口,另外LinkedList还实现了Deque接口,见名知意,前者底层是数组,后者底层是链表。(对应的类图如下)
在这里插入图片描述
2.ArrayList的底层数组默认容量是10,传参的话按传的参数大小指定其容量。
LinkedList的底层是链表,并且有一个指向头和尾的指针。

在这里插入图片描述
在这里插入图片描述

3.#查找get(int index)方法
由于ArrayList底层是数组,所以直接返回数组对应的下标值就可,而LinedList底层是链表则需要从头遍历找到那个index,然后返回其值。由于LinkedList底层链表中有指向头和尾的指针,所以LinkedList中获取头部元素和尾部元素时间复杂度为O(1)
在这里插入图片描述在这里插入图片描述

so:

对于这种指定下标的查询,ArrayList明显快与LinkedList!

4.#add(Object e)方法
ArrayList直接在底层数组尾部添加即可(有扩容操作).
LinedList在new一个新节点链表尾部添加.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.#add(int index,Object e)
ArrarList如果要在指定位置添加元素,如果该位置已经有了元素,就涉及到数组的移动,相对而言效率很低.
LinkedList如果要在指定位置添加元素,需要遍历底层链表找到对应的下标,进行插入.

在这里插入图片描述
在这里插入图片描述
6.#remove(int index)
ArrayList删除指定位置的元素要涉及到数组的移动.
LinkedList删除指定位置的元素要从头遍历到指定位置,进行删除操作.

在这里插入图片描述
在这里插入图片描述

总结:
对于频繁查询的,建议使用ArrayList
对于频繁插入,删除的,建议使用LinkedList.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值