以下内容基于jdk1.7.0_79源码;什么是Vector和StackVector:线程安全的动态数组Stack:继承Vector,基于动态数组实现的一个线程安全的栈;Vector和Stack特点Vector与ArrayList基本是一致的,不同的是Vector是线程安全的,会在 ...
以下内容基于jdk1.7.0_79源码;
什么是Vector和Stack
Vector:线程安全的动态数组
Stack:继承Vector,基于动态数组实现的一个线程安全的栈;
Vector和Stack特点
Vector与ArrayList基本是一致的,不同的是Vector是线程安全的,会在可能出现线程安全的方法前面加上synchronized关键字;
Vector:随机访问速度快,插入和移除性能较差(数组的特点);支持null元素;有顺序;元素可以重复;线程安全;
Stack:后进先出,实现了一些栈基本操作的方法(其实并不是只能后进先出,因为继承自Vector,可以有很多操作,从某种意义上来讲,不是一个栈);
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
(#换成@)。