arrayList和vector的区别,为什么废弃掉了vector?

 

就ArrayList与Vector的区别主要从二方面来说. 


一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 

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

 

那么为什么用ArrayList取代了Vector了呢?

 ArrayList类是可以动态增长和缩减的索引序列,它封装了一个动态再分配的对象数组,它实现了List接口。List接口用于描述一个有序的集合,集合中各个元素的位置是非常重要的。有两种协议用来访问各个元素,一种是通过迭代器,另一种是使用get和set方法来随机访问这些元素。后者对链表不太适用,不过get和set对于数组则非常适用。

    当要实现一个动态数组时,我们可能使用过Vector类。那么现在为什么要用ArrayList来代替Vector呢?原因很简单:Vector类的所有方法都是同步的(synchronized)。你可以使用两个线程安全的访问Vector对象。但是,如果你只用单个线程来访问Vector对象——这是更加常见的情况——那么你的代码将会在同步操作上浪费相当多的时间。相反,ArrayList类的方法不是同步的。因此现在的建议一般是在不需要同步时使用ArrayList而不是Vector。

你可能感兴趣的:(JAVA基础)