• ArrayList和LinkedList的区别?


    答:

    一:针对结构而言

    二:在不同应用场景下的效率不同

    2.1查询数据

    2.2添加效率

    ①往集合中间插入数据时ArrayList比LinkedList慢

    ②ArrayList正好扩容的时候添加数据要比LinkedLit慢

    2.2删除数据


    一:针对结构而言

    ArrayList底层维护的是一个动态数组,LinkedLisd底层维护的是一个双向链表,它们之间的不同主要也是数组和链表的特征比较,根据底层数据结构不同,他们所适用的场景也不同,ArrayList更适合随机查找,LinkedList更适合添加和删除

    二:在不同应用场景下的效率不同

    大多数情况可以说是“ArrayList查询快,LinkedList添加删除快”,但严格来说并不是如此

    2.1查询数据

    ArrayList比LinkedList快,原理是:

    ArrayList是数据有下标标记数据位置的,查询时直接返回对应的数组下标数据即可

    LinkedList是链表,没有对数据进行位置标记,每次获取固定位置的数据都需要循环遍历链表

    总结:虽然会出现上面的情况,可是因为ArrayList可以使用下标直接获取数据,所以在使用查询的时候一般选择ArrayList,而进行删除和增加时,LinkedList比较方便,所以一般还是使用LinkedList比较多。

    2.2添加效率

    是有前提条件的LinkedList在两种情况下插入数据要比ArrayList快

    ①往集合中间插入数据时ArrayList比LinkedList慢

    因为ArrayList往集合中间插入数据要做两件事,把之前的数据挪开赋值到新的数组位置,然后把需要插入的数据插入到数组对应的位置

    当LinkedList在插入时,需要移动指针到指定节点,才能开始插入,一旦要插入的位置比较远,LinkedList就需要一步一步的移动指针,直到移动到插入位置,这就解释了,为什么节点值越大,时间越长,因为指针移动需要时间,所以插入位置的选取对LinkedList有很大的影响。

    而ArrayList是数组结构,可以直接根据下标直接获得位置,这就省去了查找特定节点的时间,所以对ArrayList的影响不是特别大。

    ②ArrayList正好扩容的时候添加数据要比LinkedLit慢

    因为ArrayList维护的是一个数组,所以当容量到达阈值时就会进行扩容,然后会重新分配数据的位置,当数组扩容的时候速度也要比LinkedList慢

    2.3删除数据

    ArrayList要比LinkedList慢,原理同往集合中间插入数据一样,ArrayList每次删除数据都要对数组进行重组

  • 相关阅读:
    小米8 青春版root时无法检测到手机
    ECharts数据可视化项目【3】
    Cadence PCB 焊盘和封装
    C++习题2
    Java Math类
    Bean的生命周期
    vscode键盘输入不进去
    ros2移植Apollo和autoware规控算法可跑工程
    Spring最佳实践: 构建高效可维护的Java应用程序
    LCD实现鸿蒙开机页面-材料准备篇
  • 原文地址:https://blog.csdn.net/m0_56379670/article/details/127355760