【Java面试题】ArrayList和LinkedList有什么区别

这道题考的是数据结构

ArrayList 和 LinkedList 是 java 集合框架中,list 接口下的两个实现类。

以下从三个方面来讲述ArrayList 和 LinkedList 的区别

目录

[1. 内部的实现方面](#1. 内部的实现方面)

[2. 数据访问的时间复杂度不同](#2. 数据访问的时间复杂度不同)

3.空间占用方面


1. 内部的实现方面

ArrayList 内部使用的是数组的实现,通过索引来访问元素,支持快速随机访问。

LinkeList 内部使用的是双向链表来实现,每一个元素都包含一个指向前一个元素

和后一个元素的引用,适合插入和删除等操作。

2. 数据访问的时间复杂度不同

ArrayList 的时间复杂度是 O(1)

LinkedList 的时间复杂度为 O(n),是因为LinkedList 需要从头部或者尾部开始链表

直到找到元素的位置。

3.空间占用方面

ArrayList 使用数组来存储数据,占用的空间是连续的。

为何占用的空间是连续的?

可以参考:ArrayList 的自动扩容机制

https://blog.csdn.net/m0_67930426/article/details/134388002

LinkedList 通过链表连接元素,每一个元素都包含前后节点,占用的空间比较大

相关推荐
前端百草阁4 分钟前
JavaScript 设计模式(23 种)
开发语言·前端·javascript·设计模式
EntyIU8 分钟前
Java NIO 实战
java·开发语言·nio
二宝哥9 分钟前
springboot项目使用Gradle工具实现依赖版本控制
java·spring boot·后端·gradle·版本
浩瀚之水_csdn29 分钟前
Python 3 网络编程详解:从原理到实战
开发语言·网络·python
济*沧*海30 分钟前
Set集合深度解析:原理、特性与应用场景全攻略
java
geovindu30 分钟前
java: Singleton Pattern
java·开发语言·后端·单例模式·设计模式·创建型模式
AI行业学习39 分钟前
2026 版 Notepad++ 完整图文安装指南|官方渠道无捆绑,一键切换中文界面
开发语言·人工智能·python·html·notepad++
鹏易灵1 小时前
C++——7.类与对象,掌握封装、继承、多态.详解
开发语言·c++·算法
一路向北North1 小时前
Spring Security OAuth2.0(16):密码模式
java·后端·spring
水无痕simon1 小时前
5 多表操作
java·开发语言·数据库