当前位置 博文首页 > JustinQin:Java--??面试官:LinkedList真的比ArrayList添加元素

    JustinQin:Java--??面试官:LinkedList真的比ArrayList添加元素

    作者:[db:作者] 时间:2021-09-12 08:57

    欢迎进来学习的小伙伴,本文将会带你揭开真相~

    【学习背景】

    不管你是学生,还是职场小白,还是入行Java几年的小伙伴,相信很多小伙伴在面试Java工作岗位时,发现LinkedListArrayList这两者相关的问题基本是必面的~
    但是当面试官问到LinkedListArrayList的区别时,可能很多准备得不够充分的小伙伴第一反应给出的回答仅仅是这样的:

    • LinkedList底层数据结构是链表,添加和删除元素效率比ArrayList高~
    • ArrayList底层数据结构是数组,查询效率比LinkedList高~

    有点毛病,而且仅仅是这样回答,面试官可能不会怼你,但是肯定是不满意的哇,也可能会继续问:

    面试官:哦,还有吗?
    应聘者:没了~
    面试官:大意了啊,你说的效率高是有通过JMH验证尾插法添加元素的效率吗?
    应聘者:尾插法???
    面试官:嗯,从数据结构的尾部添加数据,不过这里先不试了,回去再自己学习验证下结论吧~
    应聘者:哦…[脸红emoj]…


    回本正题,那么本文最主要目的就是通过JMH工具验证LinkedList添加元素真的比ArrayList快吗?

    可能有些小伙伴会问JMH是啥?直接使用 for循环+时间戳System.currentTimeMillis() 盘它看看效率不行吗? 我想说的是你的想法针不戳,但针滴不行啊,你可以百度看看为啥,进入正文吧,JMH属于Oracle官方Open JDK提供的一款性能测试工具,文中会进行介绍~

    当然除了这个问题,本文也会将ArrayListLinkedList进行分析和面试总结,加深对这两者的认识,也希望能帮助到有需要的小伙伴~


    学习目录

    • 一、ArrayList和LinkedList
      • 1.1 ArrayList
        • 1.1.1 ArrayList特性
        • 1.1.2 ArrayList常用API
        • 1.1.3 ArrayList常见面试题(附参考答案)
      • 1.2 LinkedList
        • 1.2.1 LinkedList特性
        • 1.2.2 LinkedList常用API
        • 1.2.3 LinkedList常见面试题(附参考答案)
    • 二、JMH测试ArrayList和LinkedList性能
      • 2.1 JMH是什么?
      • 2.2 JMH应用场景?
      • 2.3 JMH测试ArrayList和LinkedList(揭开真相)
        • 2.3.1 代码实现
        • 2.3.2 结果分析
        • 2.3.3 结果分析(图形)
        • 2.3.4 真相总结
    • 附录
    cs