news 2026/8/2 1:56:51

ArrayList 和 LinkedList 的区别是什么?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ArrayList 和 LinkedList 的区别是什么?

在Java集合框架中,ArrayListLinkedList都是List接口的实现类,但底层数据结构和操作效率存在显著差异:


1. 底层数据结构

  • ArrayList
    基于动态数组实现。初始容量为10,当元素超出容量时,自动扩容至原容量的1.5倍(例如:newCapacity = oldCapacity + (oldCapacity >> 1))。

  • LinkedList
    基于双向链表实现。每个节点(Node)包含数据域和两个指针: $$ \text{Node} = { \text{prev}, \text{element}, \text{next} } $$


2. 操作效率对比

随机访问(Get/Set)
  • ArrayList:$O(1)$
    通过索引直接定位数组位置,例如:array[index]
  • LinkedList:$O(n)$
    需遍历链表,最坏情况下需扫描半个链表(平均时间复杂度为 $n/2$)。
插入与删除(Add/Remove)
  • ArrayList
    • 尾部操作:$O(1)$(扩容时除外)
    • 中间操作:$O(n)$,需移动后续元素(例如:删除索引 $i$ 的元素需移动 $n-i-1$ 个元素)。
  • LinkedList
    • 任意位置操作:$O(1)$,仅需修改相邻节点的指针(但需 $O(n)$ 时间定位位置)。

3. 内存占用

  • ArrayList
    仅需存储元素和数组容量,内存连续。
  • LinkedList
    每个元素需额外存储两个指针(每个指针占4~8字节),内存非连续,空间开销更大。

4. 适用场景

  • ArrayList
    适合频繁随机访问(如按索引查询)、尾部插入/删除操作。
  • LinkedList
    适合频繁在任意位置插入/删除(如实现栈、队列或频繁修改的列表)。

代码示例

// ArrayList 尾部插入高效 ArrayList<Integer> arrayList = new ArrayList<>(); arrayList.add(1); // O(1) // LinkedList 中间插入高效 LinkedList<Integer> linkedList = new LinkedList<>(); linkedList.add(0, 1); // O(1) 若已知位置

小结

特性ArrayListLinkedList
随机访问$O(1)$$O(n)$
头部插入/删除$O(n)$$O(1)$
尾部插入/删除$O(1)$(均摊)$O(1)$
中间插入/删除$O(n)$$O(n)$(定位)+ $O(1)$(操作)
内存占用更低更高(指针开销)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 8:48:40

Java计算机毕设之基于springboot+mysql的某零售商经营平台的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/31 2:58:04

Java毕设项目:基于springboot的健康体检网络管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/30 22:43:10

提升学术写作效率:工具横向对比及场景化应用指南

工具核心特点速览 工具名称 核心优势 适用场景 数据支撑 aibiye 全流程覆盖降重优化 从开题到答辩的一站式需求 支持20万字长文逻辑连贯 aicheck 院校规范适配模板化输出 国内本硕博论文框架搭建 覆盖90%高校格式要求 秒篇 3分钟文献综述生成 紧急补文献章节 知…

作者头像 李华
网站建设 2026/7/31 2:49:09

PINNs分数阶扩散方程的参数反演模型MATLAB代码

一、研究背景 1.1 科学问题 分数阶扩散方程&#xff1a;描述反常扩散现象&#xff0c;比整数阶扩散方程更能准确刻画记忆性、非局域性等复杂扩散过程参数反演问题&#xff1a;实际应用中扩散系数c和分数阶指数s通常未知&#xff0c;需通过观测数据反演 1.2 技术背景 物理信息神…

作者头像 李华