ArrayList、LinkedList和Vector的区别

ArrayList 容量默认是10,它和 Vector 的底层实现都是基于动态数组 ,ArrayList 的内部元素可以通过 get 和 set 方法进行访问 ;LinkedList的底层实现是基于双向链表, 当数据量很大或者操作很频繁的情况下**,插入和删除元素时具有比 ArrayList 更好的性能,在 get 和 set 方面弱于 ArrayList**。

LinkedList 比 ArrayList 更占内存,因为 LinkedList 的每个节点除了存储元素,还要存储两个指针,一个指向前驱,一个指向后继。Vector 和 ArrayList 相似,但属于强同步类,内部由于synchronized 同步关键字的存在,其方法都是同步的,保证了线程安全。如果程序本身是线程安全的,使用ArrayLIst是更好的选择。

Vector 的扩容机制是每次请求其大小的2倍 空间,ArrayList 自动扩容时,先创建一个长度为原数组长度1.5倍的新数组,然后将原数组中的数据拷贝到新数组中。如果能预估数据量,那么就给 ArrayList 分配一个较大的初始值,可以减少调整大小的开销,ArrayList支持缩容,但不会自动缩容。

LinkedLIst 实现了 Queue 和 Deque 接口,可以使用 offer、peek、poll 等方法。ArrayList根据下标以O(1)时间复杂度对元素进行访问,而LinkedList是O(n)。

相关推荐
许彰午15 小时前
我手写了一个 Java 内存数据库(二):B+ 树的插入与分裂
java·开发语言·面试
大飞记Python15 小时前
【2026更新】Python基础学习指南(AI版)——04数据类型
开发语言·人工智能·python
Alice-YUE16 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
云泽80816 小时前
C++11 核心特性全解:列表初始化、右值引用与移动语义实战
开发语言·c++
froginwe1116 小时前
DOM 加载函数
开发语言
Hello eveybody16 小时前
介绍一下背包DP(Python)
开发语言·python·动态规划·dp·背包dp
AI进化营-智能译站17 小时前
ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块
开发语言·c++·ai·机器人
iCxhust17 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
Morwit17 小时前
QML组件之间的通信方案(暴露子组件)
c++·qt·职场和发展
qeen8717 小时前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·