A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李思静 中级黑马   /  2012-7-13 08:05  /  2216 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么时候用LinkedlList什么时候用ArrayList,两者的主要区别是什么

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

3 个回复

倒序浏览
已经自己解决了,{:soso_e113:}
ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

评分

参与人数 1黑马币 +30 收起 理由
刘笑 + 30 赞一个!

查看全部评分

回复 使用道具 举报
其实造成这样的操作不同的原因,
是因为数组与链表在内存中的存储方式不同:

数组的存储需要一段连续的空间,并且数据是依次放入的,
如果中间有空余,则会造成空间的浪费;
但是链表则不同,链表中的每一个元素可以放在不连续的空间里,
每个元素单元,都会保存有独自的数据域和指针域,各元素之间是通过
指针来联系的,而数组是通过一个首地址就可以得到所有的元素地址。
回复 使用道具 举报
在此,我也补充一下:
ArrayList、LinkedList就是分别用数组和链表做内部实现的。
数组就像身上编了号站成一排的人,要找第10个人很容易,根据人身上的编号很快就能找到。
但插入、删除慢,要望某个位置插入或删除一个人时,后面的人身上的编号都要变。
当然,加入或删除的人始终末尾的也快。

链表就像手牵着手站成一圈的人,要找第10个人不容易,必须从第一个人一个个数过去。但插入、删除快。
插入时只要解开两个人的手,并重新牵上新加进来的人的手就可以。删除一样的道理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马