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。

相关推荐
码农小河6610 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
其实防守也摸鱼12 小时前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
风若飞12 小时前
Spring Ai 入门遇到问题1
java·后端·spring
Nuanyt12 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
aZhe的全栈知识分享13 小时前
AI 还原 Figma 效果总达不到预期?先别急着让它写代码
前端·后端·面试
黑马程序员毕设13 小时前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
SL_staff13 小时前
从文档工具到知识中枢:基于JVS数字底座构建企业级统一内容管理平台的技术实践
java·开源·全栈
SL_staff13 小时前
从‘连得上’到‘管得好’:JVS-IOT双引擎驱动设备运维闭环
java·物联网·产品
Fuyo_111915 小时前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试