news 2026/4/18 17:18:50

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/4/17 19:44:26

Spring的异常处理机制详解

在Spring Boot MVC架构中&#xff0c;如果Service方法中的异常没有被捕获也没有被抛出&#xff0c;异常的处理流程如下&#xff1a; 1. 默认异常处理流程 RestController public class UserController {Autowiredprivate UserService userService;GetMapping("/user/{id}&…

作者头像 李华
网站建设 2026/4/17 18:52:25

【谁懂啊!科研狗的降重血泪史谁能破?】

熬夜改了 3 遍的论文&#xff0c;查重率依然飙到 28%&#xff1b; 逐句改写半天&#xff0c;专业术语全变味&#xff0c;导师直接打回&#xff1a;“逻辑混乱&#xff01;”&#xff1b; 手动删重复、调语序&#xff0c;越改越崩溃&#xff0c; deadline 就在眼前... 作为常…

作者头像 李华
网站建设 2026/4/17 22:55:22

云徙科技:企业全链路AI解决方案赋能伙伴

云徙科技成立于2016年&#xff0c;是企业全链路AI解决方案的赋能伙伴&#xff0c;国家级专精特新“小巨人”企业&#xff0c;提供从咨询规划到生态搭建&#xff0c;从应用服务到基础设施、从营销到业财的全链路解决方案&#xff0c;致力于成为企业AI转型最受信赖的⻓期共创伙伴…

作者头像 李华
网站建设 2026/4/17 16:19:27

【课程设计/毕业设计】基于springboot的居民小区物业管理系统的设计与实现“物业办公 - 业主服务 - 数据监管” 三位一体的数字化架构【附源码、数据库、万字文档】

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

作者头像 李华
网站建设 2026/4/17 7:03:50

乐享云 v1.1.0| 不限速磁力下载,边下边播,内置字幕匹配

这是一款最近新出的免费磁力软件&#xff0c;目前仅提供安卓版。注册登录之后即可无限制使用。只需将磁力链接复制到软件中&#xff0c;等待软件解析完磁力链接后就可以打开磁力文件。如果磁力文件中包含视频资源&#xff0c;软件支持直接在线预览观看视频。同时&#xff0c;软…

作者头像 李华