整理自多个论坛的多个回复。
★ 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。
本文探讨了Vector与ArrayList在Java中的不同之处,包括线程安全性、性能表现及内部增长策略等关键方面。此外还讨论了LinkedList在某些场景下的优势。
1944

被折叠的 条评论
为什么被折叠?



