码迷,mamicode.com
首页 > 其他好文 > 详细

ArrayList与LinkedList的性能比较

时间:2020-12-28 11:09:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:结果   img   场景   com   了解   code   lazy   linked   inf   

前言

我们都知道ArrayList适合查询/替换LinkedList适合添加/删除,造成这样子的原因也在于它们底层的实现。光说这些理论似乎大家都会,所以准备用更加具体的例子来证明它,也能更好地比较这两者之间的性能关系。在测试具体场景前,简单说明下环境配置,window环境下:内存8个G;JDK8;i7处理器。

测试场景

分别准备1w、5w、10w、50w、100w条数据,也就是说数据类别有上面这几种,将它们分别按照下列场景测试。

  • 在首部、尾部添加元素/节点的效率。

  • 随机位置/索引插入元素/节点的效率。

  • 在首部、尾部删除元素/节点的效率。

  • 随机位置/索引删除元素/节点的效率。

  • 随机位置/索引获取元素/节点的效率。

  • 随机位置/索引修改元素/节点的效率。

测试结果

测试结果将以表格的方式展示。

  • 在首部、尾部添加元素/节点。

A首:ArrayList首部添加元素,L首:LinkedList首部添加元素,A尾:ArrayList尾部添加元素,L尾:LinkedList尾部添加元素。

技术图片

  • 随机位置/索引插入元素/节点。

A随:ArrayList随机位置添加元素,L随:LinkedList随机位置添加元素。

技术图片

由于50w、100w执行时间过长故并未给出具体时间,不过已经足以说明结果了。

  • 在首部、尾部删除元素/节点。

A首:ArrayList首部删除元素,L首:LinkedList首部删除元素,A尾:ArrayList尾部删除元素,L尾:LinkedList尾部删除元素。

技术图片

  • 随机位置/索引删除元素/节点。

技术图片

同上。

  • 随机位置/索引获取元素/节点。

技术图片

同上。

  • 随机位置/索引替换元素/节点。

技术图片

同上。

测试结果分析

以上的测试方式较为简单,没有考虑其他太多的因素,所以不要纠结于具体的时间,而是要了解它们的性能趋势。从测试结果来看,可以得到更为具体的结论:

  • 在首部添加/删除元素/节点过程中,随着数据量的不断增大,LinkedList明显要比ArrayList优秀很多而对于尾部添加/删除两者则差别不大

  • 在随机插入/删除/获取/替换元素/节点过程中,随着数据量的不断增大,ArrayList明显要比LinkedList优秀很多!

结论

  • ArrayList比LinkedList更能适应大多数情况

  • 频繁在首部添加/删除元素/节点,不需要过多的访问,可能更适合LinkedList。

ArrayList与LinkedList的性能比较

标签:结果   img   场景   com   了解   code   lazy   linked   inf   

原文地址:https://www.cnblogs.com/zlia/p/14165210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!