有人说Vector与 ArrayList除了一些同步的区别外,其他都一样,那我就来对比阅读下,看下究竟是不是只有这点区别:
- 底层都是通过
Object[]
,即一个对象数组来实现的。 - 构造函数:
a. 都有无参构造函数、确定初始大小的构造函数和传入集合的构造函数:Constructor(initialCapacity)
,Construtor()
,Constructor(Collection)
;
b.Vector
有一个构造函数Vector(initialCapacity, capacityIncrement)
,说明Vector
是可以指定扩容大小的,那么在他的Vector(initialCapacity)
中,这个capacityIncrement=0
,这种情况下,Vector
是2倍扩容的,而ArrayList
则是1.5倍扩容。 -
grow
方法:除了扩容大小不同(Vector
为2,ArrayList
为1.5)外,完全一样。 - 添加元素:
a. 在末尾添加:ArrayList和Vector
操作一样,每添加一个元素,扩容,然后copy数组(开销大);
b. 在中间插:操作一样,首先检查范围是否越界,然后扩容,在将要插入位置后的元素全部往后移,再将该位置插入相应的元素。 - 删除元素:不用检查容量,直接将要删除元素的位置处之后的元素前移,然后将最后一个位置元素置为
null
;需要注意的是,两个类都有两种remove
方式,一种是利用index
删除,这种方式需要边界检查,返回删除的;另一种是remove(Object)
,这种方式不用检查越界,且不返回删除的值;
Vector
与ArrayList
代码思路基本上是一样的,可能个别函数的实现会有些许差异,以上是我在对比阅读时注意的一些内容,其他如有遗漏,欢迎补充。
PEACE OUT
网友评论