ArrayList VS Vector

这种问题先看图

共同点:

  1. 存储在这两个集合中的元素的位置是有序的,相当于一种动态的数组,可以按位置取出某个元素
  2. 实现了List接口
  3. 集合中的元素允许重复
  4. 可以设置初始的空间大小

区别:

  1. 线程安全
  2. 数据增长

如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些

如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码

(备注:对于Vector&ArrayList、Hashtable&HashMap,要记住线程安全问题,记住Vector与Hashtable是旧的,是java一诞生就提供的,它们是线程安全的,ArrayList与HashMap是java2时才提供的,它们是线程不安全的。所以,我们讲课时先讲老的。)

Vector默认增长为原来两倍,还可以设置增长的空间大小

ArrayList是增长为原来的1.5倍,并且没有提供设置增长空间的方法

也就是说:

vector,线程安全,无忧无虑,大手大脚,自由自在。

arraylist,效率第一,小心翼翼,步步为营,安分守己。

时间: 2024-12-25 06:52:31

ArrayList VS Vector的相关文章

Java——(五)Collection之List集合、ArrayList和Vector实现类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.List集合 List集合代表一个元素有序.客重复的集合,集合中每个元素都有其对应的顺序索引.List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素.List集合默认按元素的添加 顺序设置元素的索引,例如第一次添加的元素索引为0,第二次添加的元素索引为1...... 1.List接口和ListIterator接口 List作为Collection接口的子接口,所以可以使用Co

ArrayList和Vector的区别

这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,,并且其中的数据是允许重复的,这是HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素(本来题目问的与hashset没有任何关系,但为了说清楚ArrayList与Vector的功能,我们使用对比方式,更有利于说明问题). 接着才说Arra

ArrayList、Vector、LinkedList、HashMap、HashTable的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,次数组元素大于实际存储的数据以便添加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通过性能上校ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项即可,所以插入速度较快. HashMap和HashTable的区别: 二者都实现了 M

ArrayList和Vector的区别?HashMap和HashTable的区别?StringBuilder、StringBuffer和String的区别?

ArrayList和Vector的区别?从两个方面 1.同步性:ArrayList是线程不安全的,是非同步的:Vector是线程安全的,是同步的.(Java中线程的同步也就满足了安全性) 2.数值增长:ArrayList每次增长为原来的50%;Vector每次增长为原来的100%; (从内部实现机制来讲,ArrayList和Vector都是使用数组(Array)来控制集合中的对象,当向集合中添加对象时,如果内部数组长度不够用时,长度会自动增长.ArrayList会增长为原来的1.5倍,Vecto

Java中 ArrayList、Vector和LinkedList 的使用和详解!

转自:[http://blog.csdn.net/kevon_sun/article/details/7936329] 1 import java.util.*; 2 3 /** 4 * (1)ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能含有“空隙”. 5 * 当数组大小不满足时会增加存储能力,将已有数组数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组进行拷贝,移动,代价比较高

List ArrayList LinkedList vector简介与区别

ArrayList,LinkedList,Vestor这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下: ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表 实现的List 特点:查询效率低,增删效率高 Vector: 底层用数组实现List接口的另一个类 特点:重量级,占据更多的系统开销 线程安全 一.同步性 ArrayList,LinkedList是不同步的,而Vestor

Java ArrayList、Vector和LinkedList等的差别与用法(转)

Java ArrayList.Vector和LinkedList等的差别与用法(转) ArrayList 和Vector是采取数组体式格式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,都容许直接序号索引元素,然则插入数据要设计到数组元素移动等内存操纵,所以索引数据快插入数据慢,Vector因为应用了synchronized办法(线程安然)所以机能上比ArrayList要差,LinkedList应用双向链表实现存储,按序号索引数据须要进行向前或向后遍历,然则插入数据时只须要记录本项的

ArrayList、Vector、LinkedList的区别及其优缺点? (转载)

原文链接:http://blog.csdn.net/wangzff/article/details/7296648 ArrayList,LinkedList,Vestor这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下: 一.同步性 ArrayList,LinkedList是不同步的,而Vestor是同步的.所以如果不要求线程安全的话,可以使用ArrayList或 LinkedList,可以节省为同步而耗费的开销.但在多线程的情况下,有时候就不得不使用Vecto

集合框架,ArrayList和Vector的区别,让arrayList线程安全的几种方案

boolean add(E e) 将指定的元素添加到此列表的尾部. void add(int index, E element) 将指定的元素插入此列表中的指定位置. boolean addAll(Collection<? extends E> c) 按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的 尾部. boolean addAll(int index, Collection<? extends E> c) 从指定

第六次作业(Arraylist 和 Vector)

最近上课的时候老师讲到了Vector的用法,可是后面看书的看到Vector的用法已经被ArrayList取代,于是便查阅了一下这两者的区别. 1.ArrayList和Vector都可用来建立一组数量可变的对象应用集合,并且可以随机访问其中的元素.而Vector的方法都是同步的,是线程安全的,ArrayList不是的.由于线程同步会影响性能,所以ArrayList的性能比Vector要好.(性能这方面应该还不懂,单纯的理解为要性能好的方法就用ArrayList) 2.当Vector或ArrayLi