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

相关推荐
程序员小假1 分钟前
向量检索的流程是怎样的?Embedding 和 Rerank 各自的作用?
java·后端
yaaakaaang19 分钟前
二十二、模板方法模式
java·模板方法模式
Wmenghu20 分钟前
Ubuntu手动安装jdk;Ubuntu手动安装Maven;Ubuntu手动安装RocketMQ;Ubuntu手动安装RocketMQ-Dashbo
java·linux·ubuntu
后置的猿猴21 分钟前
Spring 循环依赖
java·后端·spring
SeSs IZED24 分钟前
SSM与Springboot是什么关系? -----区别与联系
java·spring boot·后端
t***54424 分钟前
如何在Dev-C++中选择Clang编译器
开发语言·c++
橙子1991101625 分钟前
Java 基础相关
java·开发语言
勿忘,瞬间26 分钟前
SpringBoot配置文件
java·spring boot·后端
fTiN CAPA35 分钟前
Tomcat 都有哪些核心组件
java·tomcat·firefox
2601_9498144941 分钟前
Spring Boot中使用Server-Sent Events (SSE) 实现实时数据推送教程
java·spring boot·后端