Vector簡介java
Vector 是矢量隊列,它是JDK1.0版本添加的類。繼承於AbstractList,實現了List, RandomAccess, Cloneable這些接口。
Vector 繼承了AbstractList,實現了List;因此,它是一個隊列,支持相關的添加、刪除、修改、遍歷等功能。
Vector 實現了RandmoAccess接口,即提供了隨機訪問功能。RandmoAccess是java中用來被List實現,爲List提供快速訪問功能的。在Vector中,咱們便可以經過元素的序號快速獲取元素對象;這就是快速隨機訪問。
Vector 實現了Cloneable接口,即實現clone()函數。它能被克隆。編程
和ArrayList不一樣,Vector中的操做是線程安全的;數組
其實ArrayListhe和Vector在用法上徹底相同.但因爲Vector是一個古老的集合.(從jdk1.0就有了),那時候java尚未提供系統的集合框架,因此在Vector裏提供了一些方法名很長的方法.例如:addElement(Object obj),實際上這個方法和add(Object obj)沒什麼區別.安全
從jdk1.2之後,Java提供了系統的集合框架,就將Vector改成實現List接口,做爲List的實現之一,從而致使Vector裏有一些重複的方法.多線程
Vector裏有一些功能重複的方法,這些方法中方法名更短的是屬於後來新增的方法.更長的是原先vector的方法.然後來ArrayList是做爲List的主要實現類.看過的Java思想編程中也提到了Vector有不少缺點.儘可能少用Vector實現類.框架
public class Stack<E>extends Vector<E>dom
因爲Vector是經過數組實現的,這就意味着,Stack也是經過數組實現的,而非鏈表。函數
Stack類表示後進先出(LIFO)的對象堆棧。它經過五個操做對類Vector進行了擴展 ,容許將向量視爲堆棧。它提供了一般的push和pop操做,以及取堆棧頂點的peek方法、測試堆棧是否爲空的empty方法、在堆棧中查找項並肯定到堆棧頂距離的search方法。學習
首次建立堆棧時,它不包含項。測試
Deque 接口及其實現提供了 LIFO 堆棧操做的更完整和更一致的 set,應該優先使用此 set,而非此類。例如:
Deque<Integer> stack = new ArrayDeque<Integer>();
從如下版本開始: JDK1.0
第三部分 結論
這兩個都是jdk1.0的過期API,應該避免使用.所以再也不對其源碼進行解析學習.
jdk1.5新增了不少多線程狀況下使用的集合類.位於java.util.concurrent.
若是你說,Vector是同步的,你要在多線程使用.那你應該使用java.util.concurrent.CopyOnWriteArrayList等而不是Vector.
若是你要使用Stack作相似的業務.那麼非線程的你能夠選擇linkedList,多線程狀況你能夠選擇java.util.concurrent.ConcurrentLinkedDeque 或者java.util.concurrent.ConcurrentLinkedQueue
多線程狀況下,應儘可能使用java.util.concurrent包下的類.