java中Arraylist为什么是查找快,增删慢

和linkedlist查找慢,增删快的区别... 和linkedlist查找慢,增删快的区别 展开
 我来答
huacuobin
推荐于2018-07-20 · 超过15用户采纳过TA的回答
知道答主
回答量:34
采纳率:100%
帮助的人:32万
展开全部
主要是数据的组织方式不一样。
arraylist中的数据在内存中是连续的,成块的,查找的时候直接顺序遍历内存就可以了。插入删除的时候,就要把修改的那个节点之后的所有数据都向后移动,或者向前移动。所以就慢了。
而linkedlist在内存中是以链表形式组织的,链表这个玩意说来话太长了。链表中的数据在内存中是松散的,每一个节点都有一个指针指向下一个节点,这样查找起来就比较慢了。而插入删除的时候就是断开一个节点,然后插入删除之后再接起来。具体也不难。自己看书吧。
学java不能纯粹的啃java的语法,比如数据结构啊什么的也要涉及,你要是学了数据结构,就不会这么疑惑了。
小山山001
推荐于2017-11-28 · TA获得超过1159个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:1285万
展开全部
arraylist类似于数组形式,数据只要给定索引就可以直接得到数字,arraylist也一样,但是如果要增删,就要移动后面的说有元素,这样就慢了,而linklist是使用类似于链表来存储的,与arraylist相反,增删只要添加一个连接就可以了,不要移动后面的所有元素
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huacuobin
2018-03-05 · 超过15用户采纳过TA的回答
知道答主
回答量:34
采纳率:100%
帮助的人:32万
展开全部
主要是数据的组织方式不一样。
arraylist中的数据在内存中是连续的,成块的,查找的时候直接顺序遍历内存就可以了。插入删除的时候,就要把修改的那个节点之后的所有数据都向后移动,或者向前移动。所以就慢了。
而linkedlist在内存中是以链表形式组织的,链表这个玩意说来话太长了。链表中的数据在内存中是松散的,每一个节点都有一个指针指向下一个节点,这样查找起来就比较慢了。而插入删除的时候就是断开一个节点,然后插入删除之后再接起来。具体也不难。自己看书吧。
学java不能纯粹的啃java的语法,比如数据结构啊什么的也要涉及,你要是学了数据结构,就不会这么疑惑了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友47206ba
2011-03-26 · 超过22用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:41.7万
展开全部
arraylist中的数据在内存中是连续的,成块的,查找的时候直接顺序遍历内存就可以了。插入删除的时候,就要把修改的那个节点之后的所有数据都向后移动,或者向前移动。所以就慢了。
这句话说得经典了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
申悟空
2011-03-26 · TA获得超过174个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:82.5万
展开全部
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式