• #ArrayList 和 LinkedList 的区别(超容易理解)



    一、ArrayList和LinkedList查询之间的区别
    • LinkedList 是基于链表实现的,适合插入。
    • ArrayList是基于数组实现的,适合查询。

    ArrayList的优点:对于ArrayList,它真正的优点是按下标查询元素,相比于LinkedList,LinkedList也可以按下标查询元素,但是LinkedList需要对底层链表进行遍历,才能找到指定下标的元素,而ArrayList不用,指定下标进行查询,ArrayList 优于 LinkedList,所以这是ArrayList的优点。

    但是,如果我们讨论的是获取第一个元素,或最后一个元素,ArrayList和LinkedList在性能上是没有区别的,因为LinkedList中有两个属性分别记录了当前链表中的头结点和尾结点,并不需要遍历链表

    以上,是对于ArrayList和LinkedList在查询方面的区别

    二、ArrayList和LinkedList插入之间的区别

    ArrayList 的添加操作是存在扩容的情况,并且对于 ArrayList 的添加操作要分情况考虑。

    • 在最后的位置添加元素,不需要移动,需要扩容
    • 在指定的位置添加元素,指定位置的元素及后面的元素,均往后移动;效率相对较慢。(因为指定了位置,所以不用去遍历查找,但是需要移动元素)
    • 可以插入到指定下标位置,或者数组末尾,这种插入普通情况下是很快的,但是如果某次插入操作触发了扩容,那么本次插入就增加了额外的扩容成本。

    LinkedList 的添加操作是不存在扩容的情况。

    • 如果是插在链表的头部或者是尾部都是很快的,因为LinkedList中有单独的属性记录的链表的头结点和尾结点,不过,如果是插在指定下标位置,那么就需要遍历链表找到指定位置,从而降低了效率。
    三.总结

    以下情况使用 ArrayList

    • 频繁访问列表中的某一个元素。
    • 只需要在列表末尾进行添加和删除元素操作。

    以下情况使用 LinkedList

    • 你需要通过循环迭代来访问列表中的某些元素。
    • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
    • 做双端队列使用
  • 相关阅读:
    linux centos consul1.15.2一键安装部署
    3.27每日一题(常系数线性非齐次方程的特解)
    前端多媒体处理工具——ffmpeg的使用
    vscode插件路径转移C盘之外盘
    深入理解main函数
    flask要点与坑
    .Net Core之JWT授权
    你了解Java中的并发编程吗?
    中外联合培养工商管理博士|社科大新加坡社科大学中文授课DBA
    python 模块、原始字符串
  • 原文地址:https://blog.csdn.net/weixin_54040016/article/details/127946278