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

相关推荐
四维碎片5 分钟前
【Qt】配置安卓开发环境
android·开发语言·qt
西游音月13 分钟前
(7)框架搭建:Qt实战项目之主窗体导航栏、状态栏
开发语言·qt
3***499614 分钟前
Swift Experience
开发语言·ios·swift
iFlow_AI18 分钟前
iFlow CLI Hooks 「从入门到实战」应用指南
开发语言·前端·javascript·人工智能·ai·iflow·iflow cli
Mr_WangAndy31 分钟前
C++_chapter15_C++重要知识点_auto,function,bind,decltype
c++·decltype·bind·function·可调用对象
Maybyy39 分钟前
Chart.js图标绘制工具库
开发语言·javascript·ecmascript
万象.1 小时前
QT基础及对象树的认识
c++·qt
1***s6321 小时前
Python爬虫反爬策略,User-Agent与代理IP
开发语言·爬虫·python
柒儿吖1 小时前
Qt for HarmonyOS 水平进度条组件开发实战
开发语言·qt·harmonyos
咖啡の猫2 小时前
Python的自述
开发语言·python