[转] Java 中 Vector 和 ArrayList 的区别

本文探讨了Vector与ArrayList在Java中的不同之处,包括线程安全性、性能表现及内部增长策略等关键方面。此外还讨论了LinkedList在某些场景下的优势。

整理自多个论坛的多个回复。

★ Vector 与 ArrayList 之区别总结

1. Vector 是线程同步的,所以它也是线程安全的,而 Arraylist 是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用 Arraylist 效率比较高。
2. 如果集合中的元素的数目大于目前集合数组的长度时,Vector 增长率为目前数组长度的 100%,而 Arraylist 增长率为目前数组长度的 50%.如果在集合中使用数据量比较大的数据,用 Vector 有一定的优势。
3. 如果查找一个指定位置的数据,Vector 和 Arraylist 使用的时间是相同的,都是 O(1),这个时候使用 Vector 和 Arraylist 都可以。而如果移动一个指定位置的数据花费的时间为 O(n-i)n 为总长度,这个时候就应该考虑到使用 LinkedList,因为它移动一个指定位置的数据所花费的时间为 O(1),而查询一个指定位置的数据时花费的时间为 O(i)。

★ (Vector & Hashtable) vs (ArrayList & HashMap)

Vector 有信号量,可以同步锁,ArrayList 没有,所以相对来说 ArrayList 的存取速度比 Vector 快。同理 HashMap 比 Hashtable 快

Java 从1.0 开始支持 Vector,从 1.2 开始支持 List。这两个版本之间,Sun 对于 Java API 做了很多改动,其中的一个就是提出了所谓的集合框架(Collection FrameWork)。List 就是在那个时候引入的,它完全符合 1.2 版本的集合框架,而 Vector 则在集合框架出现之前就已经存在了。但 Java API 并没有将 Vector 变成 Deprecated,主要是后向兼容的问题,最终 JCP(Java Community Process) 将 vector 做了重构处理,让它符合所定制的集合框架了事。Hashtable 和 HashMap 的区别是同样的道理。

结论:尽量采用 ArrayList 和 HashMap,而不是 Vector 和 Hashtable。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值