ArrayList和Vector的区别

共同点:

1、这两个接口都实现了List接口(List接口继承了Collection接口)。

2、他们都是有序接口。(即存储在这两个接口中的元素位置是有序的,相当于一种动态的数组,我们可以按位置的索引号取出相应的元素。)

3、接口中的数据是可以重复的。(温馨提示:以上两点是List及其子接口与Set接口及其子接口的最大不同之处。Set及其子接口集合中的元素是无序的,并且是不能重复的。)

不同点:

1、安全问题:Vector是线程安全的,也就是说它的方法之间是线程同步的;ArrayList是线程不安全的,它的方法之间是线程不同步的。如果只有一个线程要访问到集合,那么用ArrayList,因为它不用考虑线程安全问题,效率会高些;如果是多个线程会访问到集合,那么最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。

2、内存空间的增加:ArrayList与Vector都有一个初始的容量大小,当存储进它们中的元素个数超出容量时,就需要增加它们的存储空间。而每次增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元。每次增加的存储单元的个数要在能存空间利用与程序利用之间取得一定的平衡。Vector默认增长为原来的两倍,ArrayList的增长策略在文档中没有明文规定(从源代码中看到的是增长为原来的1.5倍)。ArrayList与Vector都可以设置初始的空间大小,Vector还可以设置增长的空间大小,而ArrayList没有提供设置增长空间的方法。

小结:ArrayList增加原来的0.5倍,Vector增加原来的1倍。

你可能感兴趣的:(ArrayList和Vector的区别)