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。

相关推荐
迷途之人不知返4 分钟前
数据结构之,栈与队列
数据结构
zeijiershuai5 分钟前
Java 会话技术、Cookie、JWT令牌、过滤器Filter、拦截器Interceptor
java·开发语言
fury_12324 分钟前
tsfile.raw提示
java·前端·javascript
q***74826 分钟前
Spring Boot环境配置
java·spring boot·后端
MATLAB代码顾问31 分钟前
多种时间序列预测算法的MATLAB实现
开发语言·算法·matlab
superlls33 分钟前
(Spring)Spring Boot 自动装配原理总结
java·spring boot·spring
怕什么真理无穷1 小时前
c++面试11_什么是高内聚低耦合
面试
m0_736927041 小时前
2025高频Java后端场景题汇总(全年汇总版)
java·开发语言·经验分享·后端·面试·职场和发展·跳槽
CodeAmaz1 小时前
自定义限流方案(基于 Redis + 注解)
java·redis·限流·aop·自定义注解
T___T1 小时前
Ajax 数据请求详解与实战
javascript·面试