【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 通过链表连接元素,每一个元素都包含前后节点,占用的空间比较大

相关推荐
独隅几秒前
IntelliJ IDEA 在 Windows 上的完整安装与使用指南
java·windows·intellij-idea
Misnearch4 分钟前
为什么List<int[]> ans = new ArrayList<>()能成功创建
java·object
AI科技星10 分钟前
数术宇宙:零一无穷创世史诗
开发语言·网络·量子计算·拓扑学
梦想的颜色23 分钟前
从零入门:Docker在Ubuntu上的安装、使用与主流镜像仓库实战(Java/Go/MySQL/PostgreSQL/MongoDB/Nginx
java·ubuntu·docker
是多巴胺不是尼古丁32 分钟前
期末java复习--string
java·开发语言·python
Survivor00137 分钟前
高并发系统流量治理的底层算法
java·开发语言
凡人叶枫41 分钟前
Effective C++ 条款35:考虑 virtual 函数以外的其他选择
java·c++·spring
郝学胜-神的一滴1 小时前
CMake 017:彩色日志输出实战
linux·c语言·开发语言·c++·软件工程·软件构建·cmake
garmin Chen1 小时前
从 Transformer 到 Agent:大模型技术全景解析
java·人工智能·python·深度学习·transformer
m0_547486661 小时前
《数字图像处理:使用MATLAB分析与实现》全套课件PPT
开发语言·matlab·powerpoint