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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© anuo 中级黑马   /  2015-11-29 15:34  /  996 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


当程序员们不知道ArrayList与LinkedList的区别时,他们经常使用ArrayList,因为它看起来比较熟悉。然而,它们之前有巨大的性能差别。简而言之,如果有大量的增加删除操作并且没有很多的随机访问元素的操作,应该首先LinkedList。如果你刚接触它们,请查看 ArrayList vs. LinkedList来获得更多关于它们性能的信息。

12 个回复

倒序浏览
Ansel_young 来自手机 中级黑马 2015-11-29 17:11:24
沙发
anuo 发表于 2015-11-29 15:34
当程序员们不知道ArrayList与LinkedList的区别时,他们经常使用ArrayList,因为它看起来比较熟悉。然而, ...

我以为会有总结的东西
回复 使用道具 举报
说一说我的理解吧!
ArrayList 你可以想象成火车票和座位,你需要对号入座,不然会和其他乘客产生冲突。当你选择退票时,这个座位的座位号会空出来,重新放到销售窗口。

LinkedList 和我们小学初中刚入学上体育课时的排队一样。从高到低,站一个四方队列出来。排好队之后,老师会告诉你,记住身边的人。和LinkedList原理一模一样。
回复 使用道具 举报
各种线性表的性能分析
      Java提供的List就是一个线性表接口,而ArrayList、LinkedList又是线性表的两种典型实现:基于数组的线性表和基于链的线性表。Queue代表了队列,Deque代表了双端队列(既可以作为队列使用,又可以作为栈使用)。初学者可以无须理会ArrayList和LinkedList之间的性能差异,只需要知道LinkedList集合不仅提供了list的功能,还提供了双端队列、栈的功能就行。但是对于一个成熟的java程序员,在一些性能非常敏感的地方,可能需要慎重选择哪个list实现。
    一般来说,由于数组以一块连续内存区来保存所有的数组元素,所以数组在随机访问时性能更好,所有的内部以数组作为底层实现的集合在随机访问时性能都比较好,而内部以链表作为底层实现的集合在执行插入,删除操作时由较好的性能,但是总体来说,ArrayList的性能比LinkedList的性能要好,因此大部分时候要首先考虑ArrayList。关于使用list集合有如下建议:
1.如果需要遍历list集合元素,对于ArrayList集合,应该使用随机访问方法(get)来遍历集合元素,这样性能更好;对于LinkedList集合,则应该采用迭代器来遍历集合元素;
2.如果需要经常执行插入、删除操作来改变包含大量数据的list集合的大小,可考虑使用LinkedList集合。使用ArrayList可能需要经常重新分配内部数组的大小,效果可能较差。
3.如果有多个线程需要同时访问list集合中的元素,可以使用Collections将集合包装成线程安全的集合。
回复 使用道具 举报 1 0
13542010298 来自手机 中级黑马 2015-11-29 22:07:31
报纸
我也搞不懂
回复 使用道具 举报
看看大家的评论也能学习到东西
回复 使用道具 举报
说的有道理....
回复 使用道具 举报
其实比较简单的, 他们首先都是有序可重复的, 同时LinkedList 在于怎么存怎么取 , 队列的特性, 先进先出
回复 使用道具 举报
Camwly 中级黑马 2015-11-30 11:21:43
9#
评论才是经典啊
回复 使用道具 举报
一路向东 发表于 2015-11-29 19:30
各种线性表的性能分析:
      Java提供的List就是一个线性表接口,而ArrayList、LinkedList又是线性表的两 ...

学习了,概述的很好
回复 使用道具 举报
13542010298 来自手机 中级黑马 2015-12-2 21:43:31
11#
好东西不错不错
回复 使用道具 举报
查询多用ArrayList,速度快,增删多用LinkedList,速度快
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马