Vectory与ArrayList的区别

来源:互联网 发布:java中怎么读取ini文件 编辑:程序博客网 时间:2024/05/21 11:19

Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。

VectorArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
       可能很多人都不知道ArrayList,但是肯定知道Vector,因为VectorArrayList早,所以用的
比较多。但是在java1.2之后的Collection框架中,Vector已经被淘汰了,因为要保持兼容型,
这个类会一直存在,但是确被建议不要使用,这就是软件的兼容性。
    对于不熟悉Vector的人那最好了,直接用ArrayList就好了,不过习惯使用Vector的最好也转到ArrayList(虽然Vector可能永远存在JDK),但是我们没有理由放弃ArrayList使用Vector
    public class Vector extends AbstractList implements
                                                   List,  RandomAccess, Cloneable, java.io.Serializable
    可以看出和ArrayList的声明是一样的,这里不考虑它的实现,来看看主要区别:
1、Vector有而ArrayList没有的方法:addElementcopyIntoelementAtelementsfirstElementfirstElement等等,这里就不一一列举,基本上都是多余的方法,而且还使用了Enumeration(一起被淘汰的)
2、Vector的实现相对ArrayList稍微复杂,Vector功能并不比ArrayList强大,代码量确是两倍。
3、Vector中的大部分方法都是同步方法,不要认为这是它的优点!同步是要付出代价的,要不然在单例模式中很多人都希望用Double-Check Lock(虽然不可行)。因为方法都经过同步,效率自然下降不少。