ArrayList和LinkedList的区别

  1. 底层数据结构
  • ArrayList 是动态数组的数据结构实现。

  • LinkedList 是双向链表的数据结构实现。

  1. 操作数据效率
  • ArrayList按照下标查询的时间复杂度O(1)【内存是连续的,根据寻址公式】, LinkedList不支持下标查询。

  • 查找(未知索引): ArrayList需要遍历,链表也需要链表,时间复杂度都是O(n)。

  • 新增和删除

    • ArrayList尾部插入和删除,时间复杂度是O(1);其他部分增删需要挪动数组,时间复杂度是O(n)。

    • LinkedList头尾节点增删时间复杂度是O(1),其他都需要遍历链表,时间复杂度是O(n)。

  1. 内存空间占用
  • ArrayList底层是数组,内存连续,节省内存。

  • LinkedList 是双向链表需要存储数据,和两个指针,更占用内存。

  1. 线程安全
  • ArrayList和LinkedList都不是线程安全的。

  • 如果需要保证线程安全,有两种方案:

    • 在方法内使用,局部变量则是线程安全的。

    • 使用线程安全的ArrayList和LinkedList。

相关推荐
毕设源码-钟学长5 分钟前
【开题答辩全过程】以 儿童游泳预约系统为例,包含答辩的问题和答案
java·eclipse
皮皮林55137 分钟前
5种接口频率监控方案实战对比,性能、成本、复杂度全解析!
java
似水流年 光阴已逝43 分钟前
从Jar包到K8s上线:全流程拆解+高可用实战
java·kubernetes·jar
YA3331 小时前
java设计模式八、组合模式
java·设计模式·组合模式
不语n1 小时前
快速排序(Quick Sort)详解与图解
数据结构·算法·排序算法·快速排序·双指针排序
三萬Q1 小时前
数据结构--并查集
数据结构
一枚码仔1 小时前
SpringBoot启动时执行自定义内容的5种方法
java·spring boot·后端
桦说编程1 小时前
如何在Java中实现支持随机访问的固定窗口队列
java·数据结构·后端
小白黑科技测评1 小时前
2025 年编程工具实测:零基础学习平台适配性全面解析!
java·开发语言·python