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。

相关推荐
七夜zippoe14 小时前
Spring Boot自动配置魔法与@EnableAutoConfiguration原理揭秘
java·spring boot·后端·自动配置·条件注解
byzh_rc14 小时前
[算法设计与分析-从入门到入土] 分治法
算法
就叫飞六吧14 小时前
钉钉企业内部应用 SSO 免登集成实战 (Spring Boot 版)
java·spring boot·钉钉
秋邱14 小时前
Java包装类:基本类型与包装类转换、自动装箱与拆箱原理
java·开发语言·python
拉拉拉拉拉拉拉马14 小时前
感知机(Perceptron)算法详解
人工智能·python·深度学习·算法·机器学习
falldeep14 小时前
LeetCode高频SQL50题总结
数据结构·数据库·sql·算法·leetcode·职场和发展
万邦科技Lafite14 小时前
淘宝开放API获取订单信息教程(2025年最新版)
java·开发语言·数据库·人工智能·python·开放api·电商开放平台
CoderCodingNo14 小时前
【GESP】C++五级真题(前缀和思想考点) luogu-P10719 [GESP202406 五级] 黑白格
开发语言·c++·算法
七夜zippoe14 小时前
Spring Boot Starter自定义开发 构建企业级组件库
java·spring boot·starter·自动装配·配置元
zore_c14 小时前
【C语言】排序算法——希尔排序以及插入排序 ——详解!!!
c语言·数据结构·c++·笔记·算法·排序算法·推荐算法