array和linked图解(如果看不懂我直播吃显示器)

本文详细解析了ArrayList和LinkedList在内存空间中的分布,并通过实例说明为何ArrayList查询速度快,而LinkedList在删除和新增操作上更优。查询时ArrayList由于空间连续,定位速度快;而LinkedList需遍历指针。ArrayList增删操作可能涉及元素移动甚至扩容,时间复杂度高;LinkedList则可直接调整指针,效率更高。
摘要由CSDN通过智能技术生成

arraylist和linkedlist区别的终点站
Q:为什么arraylist查询较快,而linkedlist删除,新增较快
在这里插入图片描述

在这里插入图片描述
如图所示黑色为不可用空间,绿色为可用空间。
arraylist在内存空间中为一个连续的空间,而linked是不连续的空间。
查询时
以int类型举例,int所占字节为4。
当arraylist要查询arraylist[4]时会首先找到arraylist[0]的首地址(也就是图中的800位置),那么arraylist[4]的位置就是800+44=816,这样就可以快速定位到arraylist[4]位置并取值。
如果是linkedlist由于存储并不是连续的,所以并不可以用arraylist[i]=arraylist[0]+i
4的公式,只能从第一位按照指针一个一个去查找。
综上所述在查询时arraylist的时间复杂度为O(1),而linkedlist的时间复杂度为O(n)
删除和新增时
arraylist新增不需要扩容时,还是因为arraylist储存是连续的,当我需要在中间插入一个元素时,我需要这个元素以后的所有元素均向后平移一位。如果恰巧超过arraylist长度时,需要舍掉这一整块空间,重新寻

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值