Vector
Vector
一、定义
1 | public class Vector<E> |
定义上和 ArrayList 一样,继承同一个父类和实现相同的接口。
二、实现原理
实际上,Vector 和 ArrayList 的实现代码基本一致,底层数据结构都是数组,而且接口方法的实现代码都差不多。
目前来说,也就发现了 Vector 和 ArrayList 的几点区别。
2.1 同步锁
第1点是同步锁的区别,Vector 的大部分方法都使用了 synchronized 来加锁,用于避免并发访问和修改:
1 | public synchronized E get(int index) { |
而 ArrayList 的方法都是没有 synchronized 加持的,也就是完全不考虑并发同步的问题。所以一般情况下,ArrayList 相比于 Vector 在取数存数上的效率会高一些。
2.2 迭代器
ArrayList 使用的当前最常用的迭代器接口 Iterator。
而 Vector 则是以前的旧枚举迭代器 Enumeration:
1 | public Enumeration<E> elements() { |
也不是说 Iterator 就比 Enumeration 好。只是 Iterator 相比于 Enumeration,不仅增加了 remove 方法,而且 接口方法名称也更精简。
在使用体验上,Iterator 确实会更好用一些。