Stack 是先進後出的棧結構,其並不直接實現具體的邏輯,而是通過繼承 Vector 類,調用 Vector 類的方法實現。
public
class Stack<E> extends Vector<E>
核心方法
Stack 類代碼非常簡單,其有 3 個核心方法:push、pop、peek。
push
public E push(E item) {
addElement(item);
return item;
}
可以看到 push 方法直接調用 Vector 的 addElement 方法將元素插入數組尾部。
pop
public synchronized E pop() {
E obj;
int len = size();
obj = peek();
removeElementAt(len - 1);
return obj;
}
pop 方法調用 Vector 的 removeElementAt 方法,刪除了一個元素。要注意的是,其刪除的是數組最後一個元素,而不是第一個元素。
peek
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
peek 方法直接返回列表最後一個元素。
總結
Stack 方法代碼真的是非常簡單,其利用 Vector 實現了一個線程安全的棧結構。總的來說,其有以下特點:
- 底層採用 Vector 實現,因此其也是採用數組實現,也是線程安全的。
- 先進後出的棧結構