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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘江华 黑马帝   /  2011-10-22 14:49  /  2264 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁说下集合中 linkedList 和ArrayList执行效率的比较,以及分析下它们的数据结构方式。谢谢。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 这些问题要搞明白

查看全部评分

5 个回复

正序浏览
杨强 黑马帝 2011-10-24 19:57:37
地板
1)Linkedlist效率当然是高的, 你就算优化到极致, 估计也差别不大;
2)ArrayList当然比数组的效率低一些, 毕竟是多了一些环节, 但ArrayList用着方便, 它相当于一个可变长度的数组;
3)折半插入排序算法;
4)ArrayList主要是查找快速
5)LinkedList主要是增刪快速

回复 使用道具 举报
我去找找看那视频。谢谢各位了。{:soso_e179:}
回复 使用道具 举报
咖啡 黑马帝 2011-10-22 22:00:20
板凳
多看下毕老师的视频,就知道了啦

评分

参与人数 1技术分 +1 收起 理由
admin + 1 知道了来分享一下哦。

查看全部评分

回复 使用道具 举报
总的来说ArrayList和LinkedList的大致区别:
     1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
     2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
     3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
详细来说ArrayList的内部实现是基于基础的对象数组的,因此,它使用get方法访问列表中的任意一个元素时(random access),它的速度要比LinkedList快。LinkedList中的get方法是按照顺序从列表的一端开始检查,直到另外一端。对LinkedList而言,访问列表中的某个指定元素就是挨个比较查找。然而当一个元素被加到ArrayList的最开端时,所有已经存在的元素都会后移,这就意味着数据移动和复制上的开销。相反的,将一个元素加到LinkedList的最开端只是简单的未这个元素分配一个记录,然后调整两个连接。在LinkedList的开端增加一个元素的开销是固定的,而在ArrayList的开端增加一个元素的开销是与ArrayList的大小成比例的(这个例子有点极端,但是能说明问题)
还有HashList在删除插入和查找上的效率跟开销都是在两个之间的,不是很好也不是很坏,可以根据你要做的东西选择要用哪一种。一般情况下如果经常要进行删除插入操作的话选用LinkedList,而如果做的项目要经常对数据进行查找操作最好选用ArrayList,而如果也要做删除插入操作也做查找操作的话,就用HashList吧

评分

参与人数 1技术分 +3 收起 理由
admin + 3 赞一个!

查看全部评分

回复 使用道具 举报
郭敏 黑马帝 2011-10-22 14:53:42
沙发
| ---- ArrayList: 底层的数据结构使用的数组数据结构。特点:查询,修改数据比较快,但是增删稍慢。线程不同步。默认长度为10 按50%增长
| ---- LinkedList: 底层的数据结构使用的是链表数据结构。特点:增删速度很快,查询稍慢。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马