? ? ? 首先,java.util.ArrayList大家众所周知,是一种数组集合,它的特点是有序、可重复、查询快、线程不安全。虽然优点很多,但是往往在多线程的场景中,其使用方法就要多考虑了,该加锁时就需要毫不犹豫的加上锁。
? ? ? 然而,除了ArrayList外,还有个集合类与其很像,那就是java.util.Vector。以下来说说他们的共同点与不同点。
?
? 相同点
- 都是数组结构;
- 都继承了AbstractList,实现了List<E>, RandomAccess, Cloneable, java.io.Serializable。
? 不同点
- ArrayList为线程不安全,Vector为线程安全。所以Vector的效率要比ArrayList低很多;
- ArrayList和Vector都采用线性连续存储空间(数组),当存储空间不足的时候,ArrayList默认增加为原来的50%,Vector默认增加为原来的一倍;
- Vector可以设置capacityIncrement,而ArrayList不可以,从字面理解就是capacity容量,Increment增加,容量增长的参数。
?