1.Vector类定义说明
public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable
1.1 RandomAccess是一个空接口,给可以提供随机访问的List实现去标识一下,这样使用这个List的程序在遍历这种类型的List的时候可以有更高效率。
这句话隐含的意思就是只要支持快速随机访问的集合类都应该实现这个接口,那么与之对应的支持顺序访问的集合类就不应该实现这个接口:
标识举例:
Vector vector = new Vector();
if(vector instanceof RandomAccess) {
pass
}
1.2instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
2. Vector底层是一个数组对象,protected Object[] elementData
3. Vector是线程同步的,Vector类的操作方法带有synchronized
4.扩容机制
与ArrayList相比,扩容大小不一样,其他一致
如果是无参,默认10,后面按两倍扩容
如果指定大小,扩容按两倍扩容
如果指定扩容大小,则按指定大小扩容
private void grow(int minCapacity) {
int oldCapacity = elementData.length;
int newCapacity = oldCapacity +
((capacityIncrement > 0 ) ? capacityIncrement : oldCapacity);
//如果没有指定扩容大小,即capacityIncrement=0,则扩容一倍,否则按指定扩容
pass
}
初始化Vector时可指定:
public Vector(int initialCapacity, int capacityIncrement) {
//Vector构造函数
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
this.capacityIncrement = capacityIncrement;
}
}
本文详细介绍了Java中Vector类的特点,包括其作为线程安全的List实现、支持随机访问接口、内部数组结构、扩容机制及初始化方式等内容。
4万+

被折叠的 条评论
为什么被折叠?



