# 二、Vector Vector是jdk1.2的类,比较老旧的一个集合类 > Vector底层也是数组,与ArrayList最大的区别就是:**同步(线程安全)** Vector是同步的 我们可以看见这几个方法都是synchronized的。 在要求非同步的情况下我们可以用ArrayList来替代Vector 如果想要ArrayList实现同步我们就需要调用collections的方法 > List list = Collections.synchronizedList(new ArrayList(...)); 来实现同步 还有一个区别就是 - ArratLIst在不够用的时候实在原来基础上拓展0.5倍,而Vector是一倍。 ```java private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); elementData = Arrays.copyOf(elementData, newCapacity); } ``` ## 总结 - 底层是数组,现在很少用,已经被ArrayLIst替代,原因有两个 - Vector的所有方法都是同步的,有性能损失 - Vector出事话length是10超过length是会以100%的比率增加,相比ArrayList更加小号内存 最后修改:2019 年 10 月 22 日 © 允许规范转载 打赏 赞赏作者 赞 0 如果觉得我的文章对你有用,请随意赞赏