• 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每次删除数据都要对数组进行重组

  • 相关阅读:
    【Python】论文中常用的Matplotlib画图(三)
    nginx源码分析 -异常处理
    数学建模学习(109):几行代码训练几十种机器学习模型
    LeetCode每日一题——808. 分汤
    【Vue】基础系列(三三)指令语法-事件及其修饰符,动态样式,v-model的用法,数据持久化存在本地localStorage
    JUnit5 【最实用最简洁】
    zabbix监控
    蚂蚁集团重组支付宝高层,井贤栋辞去支付宝法人和董事长职位
    SpringCloud Alibaba微服务实战六- 服务网关
    python项目中使用requirement.txt依赖提高项目的移植效率
  • 原文地址:https://blog.csdn.net/m0_56379670/article/details/127355760