`
bingzhen66
  • 浏览: 36541 次
文章分类
社区版块
存档分类
最新评论

67.ArrayList和LinkedList在性能上的区别

阅读更多

ArrayList和LinkedList在性能上各有优缺点,都有各自所适用的地方,总的说来可以描述如下:

1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。
2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。
3.LinkedList不支持高效的随机元素访问。
4.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间
可以这样说:当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
简写:

LinkeedList底层是链表
ArrayList底层是数组

对于随机访问set和get,ArrayList效率高,
因为LinkeedList要移动指针。
而ArrayList直接访问元素。

对于增加和删除,LinkeedList效率高,
因为ArrayList要移动数据。
而LinkeedList增加和删除耗费的时间基本固定

数据添加在后面的时候,并且需要随机访问时,ArrayList比较合适。
数据添加在前面或中间,并且顺序访问时,LinkeedList比较合适。
一般ArrayList常见。
下面是测试5000次运算的结果

测试结果

=========ArrayList AddLast=================
203ms
=========LinkedList AddLast================
125ms
=========ArrayList AddFirst=================
2625ms
=========LinkedList AddFirst================
62ms
=========ArrayList Get====================
15ms
=========LinkedList Get===================
37891ms
=========ArrayList Remove=================
2562ms
=========LinkedList Remove================
16ms

分享到:
评论

相关推荐

    ArrayList LinkedList Vector性能测试

    比较ArrayList,LinkedList,Vector三者随机读取,插入,删除性能。

    05丨ArrayList还是LinkedList?使用不当性能差千倍.html

    05丨ArrayList还是LinkedList?使用不当性能差千倍.html

    ArrayList LinkedList Vector性能对比

    NULL 博文链接:https://lf6627926.iteye.com/blog/1297695

    Java中ArrayList和LinkedList的遍历与性能分析

    主要给大家介绍了ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论。相信对大家的理解和学习具有一定的参考价值,有需要的...

    java中ArrayList 、LinkList区别.doc

    ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。例如我们可以用ArrayList来存储...那么ArrayList和LinkedList在性能上有什么差别呢?什么时候应该用ArrayList什么时候又该用LinkedList呢?

    java 中ArrayList与LinkedList性能比较

    主要介绍了java 中ArrayList与LinkedList性能比较的相关资料,需要的朋友可以参考下

    JAVA LinkedList和ArrayList的使用及性能分析

    JAVA LinkedList和ArrayList的使用及性能分析,这篇文章也是以JAVA List的总结。

    阿里百度美团面试题合集

    ArrayList 和 LinkedList 底层 . HashMap 及线程安全的 ConcurrentHashMap,以及各自优劣势 . Java 如何实现线程安全 . Synchronized 和 Lock 哪个更好? . HashMap 中的 get()方法是如何实现的? . HashMap 可以用...

    Java 面试宝典

    5、switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上? .. 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? ....................... 9 7、char 型变量中能不...

    完美世界大数据笔试.pdf

    ArrayList,vector,linkedlist区别 10. synchronized和volatile区别 11. 接⼝与抽象类的区别 12. jvm垃圾回收机制 13. Annotation关键字 14. 竟然还有后缀式这种东西 15. 编程题⼀道回溯法,⼀道双指针的问题 3. ...

    java 面试题(1)

    4. int 和 Integer 有什么区别5. String 和StringBuffer的区别6. 说出ArrayList,Vector, LinkedList的存储性能和特性7. &和&&的区别8. HashMap和Hashtable的区别9. final, finally, finalize的区别10. Overload和...

    JAVA面试资料大全-整理.zip

    4、 说出 ArrayList,Vector, LinkedList 的存储性能和特性 5、 Collection 和 Collections 的区别。 6、HashMap 和 Hashtable 的区别。 7、 线程的基本概念、线程的基本状态以及状态之间的关系 8、 abstract class...

    Java常见面试题208道.docx

    25.ArrayList 和 LinkedList 的区别是什么? 26.如何实现数组和 List 之间的转换? 27.ArrayList 和 Vector 的区别是什么? 28.Array 和 ArrayList 有何区别? 29.在 Queue 中 poll()和 remove()有什么区别? 30....

    浅谈 java中ArrayList、Vector、LinkedList的区别联系

    ArrayList,Vector底层是由数组实现,LinkedList底层是由双线链表实现,从底层的实现可以得出性能问题ArrayList,Vector插入速度较慢,查询速度较快,而LinkedList插入速度较快,而查询速度较慢。再者由于Vevtor使用了...

    Java面试通关宝典:深度解读核心知识点与实战技巧,全面提升面试表现力与技术实力

    Java集合框架:这部分问题关注ArrayList、LinkedList、HashMap、HashSet等集合类的特性和使用。例如,比较ArrayList和LinkedList的优缺点;解释HashMap的工作原理和如何处理哈希冲突;讨论如何选择合适的集合类来...

    Java列表对象的性能分析和测试

    在这篇文章中,我要探讨的就是LinkedList和Vector/ Java列表对象的性能分析和测试 软件测试 SDK提供了有序集合接口java.util.List的几种实现,其中三种最为人们熟知的是Vector、ArrayList和LinkedList。...

    软件测试中的Java列表对象的性能分析和测试

    在这篇文章中,我要探讨的就是LinkedList和Ve软件测试中的Java列表对象的性能分析和测试SDK提供了有序集合接口java.util.List的几种实现,其中三种最为人们熟知的是Vector、ArrayList和LinkedList。有关这些List类的...

    2Java性能优化二.zip

    比方,相同作为List的实现,LinkedList和ArrayList在随机訪问上的性能却差了好几个量级;比方相同是文件读写的实现,使用Stream方式和使用JAVA NIO的方式,其系能可能又会是还有一个数量级. 因此,尽管与设计优化相比,...

Global site tag (gtag.js) - Google Analytics