ArrayList,LinkedList,Vector

ArrayList和Vector都是基于对象数组实现的列表,线程安全性不同,ArrayList效率高但非同步,Vector则同步但效率较低。LinkedList使用双向链表结构,适合大量增删操作,查询速度相对较慢。在并发环境下,可以通过Collections.synchronizedList转换ArrayList为安全的列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三者相同点:ArrayList,LinkedList,Vector都实现了List接口,因此均具有:有序、可重复、可通过索引访问集合中的元素。

ArrayList和Vector

相同点:

1.实现list接口,有序,可重复,可索引遍历;

2.底层都是一个object数组,通过维护这个数组结构来改变ArrayList或Vector的结构。

不同点:

1.ArrayList是线程不同步的(不安全),操作效率高;Vector是线程同步的(安全),操作效率低;

2.ArrayList是jdk1.2出现的,Vector是jdk1.0出现的。(HashTable也是jdk1.0,在不考虑线程安全情况下,推荐以ArrayList来代替Vector、HashMap来代替HashTable;如果遇到需要并发环境,也可以通过

List list = Collections.synchronizedList(new ArrayList(…));

将不安全的集合转化为安全的集合。)

ArrayList和LinkedList

相同点:

1.实现list接口,有序,可重复,可索引遍历;

2.ArrayList和LinkedList都不是线程安全的(Vector是线程安全的)

不同点:

1.ArrayList底层是一个数组结构,LinkedList底层是一个双向链表结构;

2.ArrayList查询速度快,增删速度慢;LinkedList增删速度快,查询速度慢;

3.ArrayList初始容量大小为10,默认增长为原来的1.5倍;LinkedList没有初始化大小,也没有扩容的机制,就是一直在前面或者后面新增就好。(Vector初始容量也为10,默认增长为原来的2倍);

4.对于ArrayList无论采取哪一种遍历方式其速度都差不多,但是对于LinkedList最好不用for循环遍历,推荐Iterator(迭代器)遍历。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值