Vector与ArrayList大致相同,但是多加了synchronized来保证线程安全。
Vector比ArrayList多了一个属性:
//这个属性是在扩容的时候用到的,它表示每次扩容只扩capacityIncrement个空间就足够了。
//该属性可以通过构造方法赋值。
protected int capacityIncrement;
Vector 的默认大小也是 10,而且它在初始化的时候就已经创建了数组了,这点跟 ArrayList 不一样。
扩容:newCapacity 默认情况下是两倍的 oldCapacity,而当指定了 capacityIncrement 的值之后,
newCapacity 变成了oldCapacity+capacityIncrement
二者比较:
1、ArrayList 创建时的大小为 0;当加入第一个元素时,进行第一次扩容时,默认容量大小为 10。
2、ArrayList 每次扩容都以当前数组大小的 1.5 倍去扩容。
3、Vector 创建时的默认大小为 10.
4、Vector 每次扩容都以当前数组大小的 2 倍去扩容。当指定了 capacityIncrement 之后,
每次扩容仅在原先基础上增加 capacityIncrement 个单位空间。
5、ArrayList 和 Vector 的 add、get、size 方法的复杂度都为 O(1),remove 方法的复杂度为 O(n)。
6、ArrayList 是非线程安全的,Vector 是线程安全的。