你的位置:首页 > 软件开发 > Java > 【JAVA集合】Vector和Stack

【JAVA集合】Vector和Stack

发布时间:2016-03-10 14:02:08
以下内容基于jdk1.7.0_79源码;什么是Vector和StackVector:线程安全的动态数组Stack:继承Vector,基于动态数组实现的一个线程安全的栈;Vector和Stack特点Vector与ArrayList基本是一致的,不同的是Vector是线程安全的,会在 ...

【JAVA集合】Vector和Stack

以下内容基于jdk1.7.0_79源码;

什么是Vector和Stack

Vector:线程安全的动态数组

Stack:继承Vector,基于动态数组实现的一个线程安全的栈;

Vector和Stack特点

Vector与ArrayList基本是一致的,不同的是Vector是线程安全的,会在可能出现线程安全的方法前面加上synchronized关键字;

Vector:随机访问速度快,插入和移除性能较差(数组的特点);支持null元素;有顺序;元素可以重复;线程安全;

Stack:后进先出,实现了一些栈基本操作的方法(其实并不是只能后进先出,因为继承自Vector,可以有很多操作,从某种意义上来讲,不是一个栈);

Vector和Stack继承的类和实现的接口

【JAVA集合】Vector和Stack

以上接口和类中,关于Iterable接口、Collection接口、List接口、RandomAccess、 Cloneable、 java.io.Serializable接口、AbstractCollection类、AbstractList类的相关说明,可以参考上一篇:JAVA中的ArrayList,基本都是一样的;剩下Vector类和Stack类如下:

Vector类

与ArrayList基本一致,可参考JAVA中的ArrayList,剩下的主要不同点如下:

1、Vector是线程安全的

2、ArrayList增长量默认是0.5倍;而Vector的增长量capacityIncrement是可以配置的,如果未指定(<=0),则大小增长一倍,源码如下:

  private void grow(int minCapacity) {    // overflow-conscious code    int oldCapacity = elementData.length;    int newCapacity = oldCapacity + ((capacityIncrement > 0) ?                     capacityIncrement : oldCapacity);    if (newCapacity - minCapacity < 0)      newCapacity = minCapacity;    if (newCapacity - MAX_ARRAY_SIZE > 0)      newCapacity = hugeCapacity(minCapacity);    elementData = Arrays.copyOf(elementData, newCapacity);  }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:【JAVA集合】Vector和Stack

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。