嗨喽~小伙伴们我又来了,

今天闲得没事干,来水一片文章(bushi),

不知道大伙们还记不记得数据结构中顺序表和链表的使用场景,正好昨天有位朋友给我发了一张程序运行结果的截图:

他说他在测试比较ArrayListLinkedList效率的时候,发现LinkedList的效率无论是插入,还是查询,都比ArrayList要低。这合理吗?

我不太相信,闲来无事,我就编写了一个程序来测试 ArrayListLinkedList 插入、查询的时间效率,如下所示:


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;/*** @author sixibiheye* @date 2021/9/4* @apiNote ArrayList & LinkedList 耗时测试*/
public class ArrayList$LinkedList {public static void main(String[] args) {/**** 测试插入耗时**/List<Integer> arrayInsertList = new ArrayList<>();List<Integer> linkedInsertList = new LinkedList<>();for (int i = 0; i < 100000; i++) {arrayInsertList.add(i);linkedInsertList.add(i);}//ArrayList插入耗时Long arrayInsertStart1 = System.currentTimeMillis();for (int i = 0; i < 1000; i++) {arrayInsertList.add(500,i);}Long arrayInsertEnd1 = System.currentTimeMillis();System.out.println("ArrayList插入耗时:" + (arrayInsertEnd1 - arrayInsertStart1) + "ms");//ArrayList插入耗时Long arrayInsertStart2 = System.currentTimeMillis();for (int i = 0; i < 1000; i++) {linkedInsertList.add(500,i);}Long arrayInsertEnd2 = System.currentTimeMillis();System.out.println("LinkedList插入耗时:" + (arrayInsertEnd2 - arrayInsertStart2) + "ms");System.out.println("***************************************************************");/**** 测试查询耗时**/List<Integer> arrayFindList = new ArrayList<>();List<Integer> linkedFindList = new LinkedList<>();for (int i = 0; i < 100000; i++) {arrayFindList.add(i);linkedFindList.add(i);}//ArrayList查询耗时Long arrayInsertStart3 = System.currentTimeMillis();for (int i = 0; i < 100000; i++) {arrayFindList.get(5000);}Long arrayInsertEnd3 = System.currentTimeMillis();System.out.println("ArrayList查询耗时:" + (arrayInsertEnd3 - arrayInsertStart3) + "ms");//LinkedList查询耗时Long arrayInsertStart4 = System.currentTimeMillis();for (int i = 0; i < 100000; i++) {linkedFindList.get(5000);}Long arrayInsertEnd4 = System.currentTimeMillis();System.out.println("LinkedList查询耗时:" + (arrayInsertEnd4 - arrayInsertStart4) + "ms");}
}

我尝试着运行了几次,下面是几次运行结果的截图:

  

从查询耗时来看,显然  ArrayList 在效率上要碾压 LinkedList ,但是在插入耗时上,两者貌似看不出区别。

但要注意,代码中的插入操作次数1000是相对比较小的,咱试着增加插入次数,改成100000,运行结果如下:

​​​​​​​

再运行一次:

​​​​​​​

这时,结果就很明显了,插入耗时, LinkedList 在效率上要碾压 ArrayList

哈哈,其实水这篇文章的目的是,鼓励小伙伴们对已学的东西提出质疑,如果觉得某个玩意不太符合自己的认知,完全可以敲代码去验证你的想法。

OK,水毕~

​​​​​​​

ArrayList 与 LinkedList 插入、查询效率测试相关推荐

  1. mysql 查询效率测试,mysql innode和myisam引擎查询性能比较测试

    百度了一遍下来都在说myisam引擎的查询性能比innodb好,但是没有看到拿数据出来说话的,今天得空就做了下测试. 知识回顾 摘抄自:https://blog.csdn.net/STFPHP/art ...

  2. Java集合:ArrayList和LinkedList区别?

    ArrayList和LinkedList的大致区别如下: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.  2.对于随机访问get和set,ArrayL ...

  3. java集合框架05——ArrayList和LinkedList的区别

    前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容. List概括 先来回顾一下List在Collection中的的框架图 ...

  4. 为什么ArrayList查询效率高,删除效率慢

    ArrayLIst查询效率高:ArrayLIst是连续存放元素的,找到第一个元素的首地址,再加上每个元素的占据的字节大小就能定位到对应的元素. LinkedList插入删除效率高.因为执行插入删除操作 ...

  5. ArrayList和LinkedList(转)

    ArrayList和LinkedList(转) 对于处理一列数据项,Java提供了两个类ArrayList和LinkedList,ArrayList的内部实现是基于内部数组Object[],所以从概念 ...

  6. ArrayList与LinkedList的性能分析

    作者:小码哥Damon 链接:https://juejin.cn/post/6968633784874827784 来源:掘金 1. 前言 经常在面试时,被问到集合的概念,集合 List.Map.Se ...

  7. java中ArrayList和LinkedList的区别

    首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...

  8. 请你简单介绍一下ArrayList和LinkedList的区别及大数据量情况下的插入效率对比

    请你简单介绍一下ArrayList和LinkedList的区别 ArrayList采用数组实现的,查找元素的效率比LinkedList高. LinkedList采用双线链表实现,插入和删除的效率比Ar ...

  9. java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较

    一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...

最新文章

  1. PHP 命名空间(namespace)
  2. Python3爬虫之爬取某一路径的所有html文件
  3. DataTables实现rowspan思路
  4. 五天带你学完《计算机网络》·第四天·应用层
  5. android操作系统优势,Android操作系统平台最大的优势
  6. mysql查询时强制区分大小写
  7. javascript里的post和get有什么区别
  8. FastDFS 学习笔记
  9. 数据仓库组件:Hive环境搭建和基础用法
  10. 系统中多种隐藏超级用户方法
  11. 修改打开方式的程序列表中列出程序的名称
  12. 安装VS2017报错:程序包清单签名验证失败
  13. 毕业设计之 ---- 基于大数据挖掘分析的大众点评评论文本挖掘
  14. 菜鸟Spring Cloud入门教程
  15. Adobe国际认证|发布 Adob​e Photoshop全部教程
  16. 集线器,路由器,交换机的作用和区别是什么?如何区分交换机,集线器,路由器?
  17. 5.3. 虚拟存储管理------页面置换算法
  18. php 数据库 无限级菜单,php实现无限级树型菜单(函数递归算法)[一]
  19. 消息循环中TranslateMessage和Dispatch函数的作用
  20. 不切换 Git 分支,却能同时在多个分支上工作,我是怎么做到的?

热门文章

  1. opencv视频播放
  2. HBase之四--(1):Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询...
  3. Android 学习笔记--android基本
  4. C/C++ 获取本地日期时间常见方法
  5. 【HNOI2004】L语言
  6. 百练_4123 马走日(深搜)
  7. JSON与XML优缺点对比分析
  8. github入门到上传本地项目
  9. 奇偶排序(OddEven Sort)----(排序算法十一)
  10. Android P2P语音通话实现(思路探讨)