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。

相关推荐
im_AMBER2 分钟前
Leetcode 98 从链表中移除在数组中存在的节点
c++·笔记·学习·算法·leetcode·链表
win x3 分钟前
Redis 主从复制
java·数据库·redis
蘋天纬地10 分钟前
蚂蚁数科二面-如果目前当前系统qps是100,如何降低成本
面试
不会c嘎嘎16 分钟前
C++ 进阶:从理论到手撕 Unordered 系列容器(哈希表)
数据结构·哈希算法·散列表
weixin_4239950021 分钟前
unity 处理图片:截图,下载,保存
java·unity·游戏引擎
测试界的海飞丝24 分钟前
14:00面试,14:06就出来了,问的问题过于变态了。。。
测试工具·面试·职场和发展
帅气的你24 分钟前
从零封装一个通用的 API 接口返回类:统一前后端交互格式
java·设计模式
qq_1780570726 分钟前
基于minio实现的分片上传-支持断点续传
java
高山上有一只小老虎29 分钟前
灵异背包?
java·算法
码农水水30 分钟前
大疆Java面试被问:TCC事务的悬挂、空回滚问题解决方案
java·开发语言·人工智能·面试·职场和发展·单元测试·php