源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java中ArrayList与LinkedList对比详情

  • 时间:2021-05-14 09:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java中ArrayList与LinkedList对比详情
 ArrayList,LinkedList都是Collection接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要。 [b]实现方式[/b]   ArrayList的内部采用集合的方式存储数据 [img]http://images2015.cnblogs.com/blog/1142536/201704/1142536-20170415140208580-1986245088.png[/img] 唯一需要注意的是对于容量超过阈值的处理逻辑,数组的默认容量大小是10,最大容量是Integer.Max_Value,超过最大容量会抛内存溢出异常, [b]扩容机制看下面[/b] [img]http://images2015.cnblogs.com/blog/1142536/201704/1142536-20170415140905376-851804110.png[/img] 扩容后的容量是原有容量的1.5倍 LinkedList的实现方式 内部采用双向链表Node内部类来存储数据,由于采用了双向链表,LinkedList也可以当做栈和队列来使用,但是效率比较低,Java提供了ArrayDeqeue的高效率实现。 [img]http://images2015.cnblogs.com/blog/1142536/201704/1142536-20170415141243345-531173700.png[/img] [b]性能比较[/b] 在尾部插入效率上面,两者相差不会太大,但是LinkedList需要维护双向链表的关系,所有存储效率上面会略逊于ArrayList [img]http://images2015.cnblogs.com/blog/1142536/201704/1142536-20170415142551923-98161665.png[/img] ArrayList的时间主要耗时在容量扩容,数据迁移上面,如果我们一次性初始化容量,应该还可以有提升的空间,再来对比看看,有恐怖的50%的提升空间 [img]http://images2015.cnblogs.com/blog/1142536/201704/1142536-20170415142628158-1515555053.png[/img] Linked的优势在于头部插入的效率,只需要修改头部元素的指针就可以做到,而数组还需要移动后续的数据,所有效率远远低于LinkedList [img]http://images2015.cnblogs.com/blog/1142536/201704/1142536-20170415143014892-638286873.png[/img] 对于get,set的操作,链表内部通过二分查找,数组可以通过下标直接访问元素,所以效率高于LinkedList [img]http://images2015.cnblogs.com/blog/1142536/201704/1142536-20170415143557908-210523465.png[/img] [b]基于以上比较,我们基本上可以确定[/b] 如果只是存放数据,并进行j简单的迭代情况下,我们一般采用集合的效率最高, 如果涉及到频繁的修改元素,就应该采用LinkedList 希望本篇文章对您有所帮助
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部