集合系列 List:Stack

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 實現,因此其也是採用數組實現,也是線程安全的。
  • 先進後出的棧結構
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章