java.util.Vectorjava
相同点:随机存取,可经过位置序号直接获取数据。都是经过一个数组来存放元素。数组
不一样点:Vector是线程安全的,方法有synchronized关键字修饰。安全
Vector默认的增加策略是每次在原容量的基础上x2。并发
Vector实现了本身的iterator,为了保证并发线程安全的共享一个Vector,开发者在next等方法中也加入了synchronized。this
public E next() { synchronized (Vector.this) { checkForComodification(); int i = cursor; if (i >= elementCount) throw new NoSuchElementException(); cursor = i + 1; return elementData(lastRet = i); } }
这里synchronized修饰的是Vector.this对象自己,而不是iterator本身,这样多个线程使用iterator操做Vector时,就能够保证线程的安全。线程
惟一的区别就是在使用本身的Vector时,加上了synchronized关键字。code
Stack类继承自Vector,stack的实现不止一种方式,好比LinkedList。java中在Vector基础上实现了一个Stack。实现的想法也很简单,就是在数组的末尾push和pop。对象