Vector与ArrayList本质上都是一个变长数组,实现变长的方法是当长度不够时,在内存区新开辟一块更长的内存,并将原来的的元素Copy到新内存区.因为本质上是数组,所以对于查找和尾部插入与删除,相对于链表而言有优势,时间可以控制在O(1)内,所以两者的适用适用都是在对数据有多数的查找和表尾部操作的时候.
不同点在于:
- Vector是线程安全的,也就是内部实现用了Synchronized,不能多线程同时操作Vector,这样会影响性能,而ArrayList则不是,具体使用哪个就依照具体情况而定了
- Vector每次扩容变为2倍内存,而ArrayList每次扩容变为1.5倍内存