Vectory与ArrayList的区别

     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(虽然不可行)。因为方法都经过同步,效率自然下降不少。

你可能感兴趣的:(jdk,多线程,thread,框架)