很多跟ArrayList的实现很像,继承的类和实现的接口都一模一样,采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加插入元素,都允许直接序号索引元素,但是插入数据要涉及到数组元素移动等内存操作,所以插入数据慢,查找的快慢看是否下标查找
Vector和ArrayList的区别:
- Vector由于使用了synchronized方法-线程安全,所以性能上比ArrayList要差
- Vector是扩展1倍,ArrayList在底层数组不够用时在原来的基础上扩展0.5倍。
- Vector没有缓存,如果使用无参构造函数,默认容量大小为10,并且直接new Object
capacityIncrement:
对于Vector整个的扩容过程,就是根据capacityIncrement确认扩容大小的,若capacityIncrement <= 0 则扩大一倍,否则扩大capacityIncrement个 。
在对元素的操作上,get、remove、add等方法都跟ArrayList的一样,只是加多了个synchronized,只要是关键性的操作,方法前面都加了synchronized关键字
加锁和释放锁的这个过程,在系统中是有开销的,因此,在单线程的环境中,Vector效率要差很多。(多线程环境不允许用ArrayList,需要做处理)。
和ArrayList和Vector一样,同样的类似关系的类还有HashMap和HashTable,StringBuilder和StringBuffer,后者是前者线程安全版本的实现
网友评论