基础是:
Vectorimplements java.util.List,定义允许基于索引的元素访问的容器.它还实现interface RandomAccess,它向用户指示底层表示允许快速(通常O(1))访问元素.
ArrayDequeimplements java.util.Deque,它定义了一个容器,支持从容器的开头和结尾添加和删除快速元素.
主要差异:
Vector支持使用List.add(int index, E element)or 的重载版本将元素添加到容器的中间List.addAll(int index, Collection<? extends E> c).
Vector支持使用该remove方法从容器中间删除元素.
Vector的set和setElementAt方法,让你做一个就地元素交换(替换一个物体Vector与另外一个,一个O(1)操作).
add到a的结尾Vector是摊销的恒定时间.添加到向量的开头或中间是线性时间操作(O(n)).
ArrayDeque已经分摊了常量时间(O(1))在容器的正面和背面添加/删除元素.
ArrayDeque不允许您专门删除容器中某个位置的元素.各种remove,removeFirst以及removeLast类的方法让你稍微有限元素移除.
ArrayDeque附带的方法对使用类似一个队列(peek,poll,add,addFirst)和类似的堆叠(offer,push,pop,peekLast,addLast),或类似的两个(因此为什么它是一个双向队列).
ArrayDeque 不支持在双端队列中间添加元素.
Vector有特殊的ListIterators,它允许你获得一个从容器中的特定位置开始的迭代器,并且还支持添加,删除和设置元素.ArrayDeque迭代器不支持那些额外的方法.
Vector是一个同步容器,这意味着它已包含为多线程环境执行同步/锁定的代码.因为ArrayDeque,如果您正在对容器进行多线程访问,则必须提供自己的同步代码.注意,它ArrayList是一个不同步的对应物Vector.