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)。

相关推荐
傻啦嘿哟14 分钟前
Python列表排序:用key参数掌控排序规则
java·开发语言
你的冰西瓜16 分钟前
C++ STL算法——修改序列算法
开发语言·c++·算法·stl
大黄说说19 分钟前
彻底删除重复节点——LeetCode 82 题「有序链表去重 II」详解
算法·leetcode·链表
仰泳的熊猫29 分钟前
题目1465:蓝桥杯基础练习VIP-回形取数
数据结构·c++·算法·蓝桥杯
froginwe1132 分钟前
装饰器模式
开发语言
俩娃妈教编程37 分钟前
洛谷选题:P1307 [NOIP 2011 普及组] 数字反转
c++·算法
枫叶丹439 分钟前
【Qt开发】Qt界面优化(三)-> Qt样式表(QSS) 设置方式
c语言·开发语言·c++·qt·系统架构
-小麦子-42 分钟前
Python 变量组包、解包及星号扩展机制详解
开发语言·python
tod1131 小时前
Redis - 客户端基本介绍
开发语言·数据库·redis·缓存
赵谨言1 小时前
运用Python编程计算减压孔板孔口直径的研究
大数据·开发语言·经验分享·python