ArrayList和LinkedList的区别

  1. **底层数据结构**:ArrayList基于动态数组实现,内部维护一个Object数组,默认初始容量为10,当元素数量超过当前容量会自动扩容

  2. **随机访问效率高**:基于数组,ArrayList通过索引访问元素,时间复杂度为O(1)

  3. **插入和删除效率低**:在中间或开头插入/删除元素时,需要移动后续元素,时间复杂度为O(n)

  4. **适合随机访问**:对于频**繁随机访问元素**的场景,ArrayList性能更好

LinkedList

  1. **底层数据结构**:LinkedList基于双向链表实现,每个节点包含数据元素和指向前后节点的引用

  2. **插入和删除效率高**:在任意位置插入/删除元素时,只需要调节相邻节点的引用,时间复杂度为O(1)

  3. **顺序访问效率低**:由于基于链表,不能随机访问,需要从头到尾开始遍历,时间复杂度为O(n)

  4. **适合频繁插入和删除**:对于频繁插入和删除的场景,效果更好

特殊情况

头插法插入数据:

​ AarrayList需要将元素依次向后移动,时间复杂度为O(n);

​ LinkedList只需要调整指针,时间复杂度为O(1)

**<u>*尾插法*</u>**插入数据:

​ ArrayList在尾部插入元素的时间复杂度为 O(1)

​ LinkedList在尾部插入元素也是O(1)

两者尾插法 都一样的效率

相同

  • 不同步

  • 线程不安全

  • 但是效率高

相关推荐
oneouto8 分钟前
锁与try catch的位置引发的思考
java
Circ.8 分钟前
SpringBoot 实现文件上传与下载(完整源码 + 详细教程)
java·spring boot·后端
zzqssliu23 分钟前
Spring Boot + XXL-JOB 搭建淘宝代购系统任务调度中心
java·spring boot·后端
一行代码一行诗++30 分钟前
goto语句
java·开发语言·算法
m0_6393107943 分钟前
大数据技术原理-HDFS的安装与应用
java·大数据·jvm·hadoop·spring·hdfs·eclipse
Plastic garden1 小时前
Redis(2) redis的高可用
java·数据库·redis
XiYang-DING1 小时前
【Spring】SpringIoC&DI
java·spring·log4j
xixingzhe21 小时前
spring构造函数注入对比@Resource
java·后端·spring
宋哥转AI1 小时前
Java搭RAG实战(三):检索问答全链路,从架构分层到SSE流式
java·agent
测试员周周1 小时前
【Appium 系列】第17节-XMind用例转换 — 从思维导图到 YAML
java·服务器·人工智能·单元测试·appium·测试用例·xmind