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。

相关推荐
沿着路走到底16 分钟前
将数组倒序,不能采用reverse,算法复杂度最低
算法
IDIOT___IDIOT25 分钟前
KNN and K-means 监督与非监督学习
学习·算法·kmeans
a努力。29 分钟前
腾讯Java面试被问:String、StringBuffer、StringBuilder区别
java·开发语言·后端·面试·职场和发展·架构
优弧36 分钟前
离开舒适区100天,我后悔了吗?
前端·后端·面试
Hcoco_me42 分钟前
大模型面试题18:t-SNE算法详解及入门实操
算法
Data_agent1 小时前
学术爬虫实战:构建知网论文关键词共现网络的技术指南
python·算法
Vic101012 小时前
解决 Spring Security 在异步线程中用户信息丢失的问题
java·前端·spring
立志成为大牛的小牛2 小时前
数据结构——五十五、散列查找的性能分析(线性探测法)(王道408)
数据结构·程序人生·考研·算法
QD_IT伟2 小时前
SpringBoot项目整合Tlog 数据链路的规范加强
java·spring boot·后端