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。

相关推荐
AI人工智能+电脑小能手4 分钟前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
数据牧羊人的成长笔记19 分钟前
逻辑回归与Softmax回归
算法·回归·逻辑回归
try2find27 分钟前
打印ascii码报错问题
java·linux·前端
014-code29 分钟前
CompletableFuture 实战模板(超时、组合、异常链处理)
java·数据库
Nicander34 分钟前
多数据源下@transcation事务踩坑
java·后端
郑州光合科技余经理39 分钟前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
それども1 小时前
DELETE 和 TRUNCATE TABLE区别
java·数据库·mysql
sjsjsbbsbsn2 小时前
大模型核心知识总结
java·人工智能·后端
Moment2 小时前
2026 年,AI 全栈时代到了,前端简历别再只写前端技术了 🫠🫠🫠
前端·后端·面试
Mrlxl.cn3 小时前
计算机网络——网络层
c语言·数据结构·计算机网络·考研