Vector 和 ArrayList 的区别

相同点:

1、都是采用数组方式存储数据,可变长度,相当于一个特殊的数组

2、都是有序输出,都可以用循环遍历.

不同点:

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

2、当Vector或ArrayList中的元素的长度超过它的初始大小长度时,Vector会将它的容量翻倍增加长度,而ArrayList只增加50%的幅度,这样,ArrayList就有利于节约内存空间。

 
    Vector v=new Vector(); 
    List list=new ArrayList();
    for (int i = 0; i <15; i++) {
        v.add(i);
        System.out.println(v.get(i));
    }
    for (int i = 0; i <15; i++) {
        list.add(i);
        System.out.println(list.get(i));
    }
 //调用显示vector的增加倍数 翻倍增长
 print(v);
 //调用显示list的增加倍数  0.5倍增长
 print(list);
ArrayList 从存储数据的方式来看: 
它允许所有元素,包括null。
List l=new ArrayList();
l.add(null); 
此数组元素数大于实际存储的数据以便增加和插入元素,Arraylist的增加和插入是需要随机产生10-0之间的最大随机数来确定长度的变化

 如果你的存储长度比增加长度的位数小,则产生随机数.都允许直接序号索引元素,但是插入数据要设计到数组元素 ,移动等内存操作,所以索引数据快插入数据慢。


补充:

答: :

     1.都是可变长度的动态数组.     2.保存形式:add方法看出来都是先加先出.

 
    :
   vector同步:线程安全.synchrnized 锁级标的意思 但是在java方法里面表示同步的意思(源码)
   arraylist异步:运行速度较快,因为没有采用线程.

  理论:线程的安全就会产生等待.
       同步方法:因为是让一个线程执行完之后,在执行下一个线程,中间有间隙时间.next
       同步方法产生了队列  就像排队做一件事情一样.
       Arraylist异步方法,只有一个线程,不需要等待上一个操作的执行,add方法所以速度快于vactor.

 

猜你喜欢

转载自blog.csdn.net/qqqnzhky/article/details/80427107