ArrayList与LinkedList的区别

1.底层实现不同

ArrayList底层是动态数组实现的。

LinkedList底层是双向链表实现的。

2.操作数据的效率

ArrayList可以按照下标查询,时间复杂度为O(1)。而LinkedList不支持下标查询。

查找的话二者都是需要遍历的,所以时间复杂度都是O(n)。

新增和删除:

ArrayList头尾插入和删除都是O(1),对于其他部位修改都需要移动数组所以是O(n)。

LinkedList头尾也是O(1),其他部位插入和删除需要遍历链表,所以O(n)。

3.内存空间占用

ArrayList底层是数组,内存连续,省空间。

LinkedList底层是双向链表,需要存储一个数据两个指针,更占用内存。

4.线程安全

两者都不是线程安全的。

如何保证线程安全:

在方法内使用局部变量。(因为局部变量是存放在栈帧里的,每个线程有一个栈,他们是线程不共享的)

使用线程安全的ArrayList和LinkedList。

相关推荐
xht08328 分钟前
PHP vs Python:编程语言终极对决
开发语言·python·php
计算机安禾11 分钟前
【数据结构与算法】第3篇:C语言核心机制回顾(二):动态内存管理与typedef
c语言·开发语言·数据结构·c++·算法·链表·visual studio
23.11 分钟前
【Java】char字符类型的UTF-16编码解析
java·开发语言·面试
怒放吧德德12 分钟前
Spring Boot实战:InfluxDB 2.x简单教程
java·spring boot·后端
无小道15 分钟前
关于mmap的理解和使用
开发语言·mmap
indexsunny15 分钟前
互联网大厂Java面试实战:核心技术与业务场景深度解析
java·spring boot·hibernate·security·microservices·interview
是小蟹呀^20 分钟前
Java中的继承:从入门到精通
java·继承
froginwe1120 分钟前
jQuery 隐藏/显示详解
开发语言
bearpping23 分钟前
怎么下载安装yarn
java
码云数智-大飞29 分钟前
分布式数据库:2026年数据架构的基石与挑战
开发语言