java.util.Stack 繼承自 Vector,實現後進先出 (LIFO) 棧。雖官方建議改用 Deque (如 ArrayDeque),但維護舊代碼仍需熟悉。
| 方法 | 說明 | 異常 |
|---|---|---|
| push(E item) | 壓入棧頂,返回 item | - |
| pop() | 移除並返回棧頂元素 | EmptyStackException |
| peek() | 查看棧頂不移除 | EmptyStackException |
| empty() | 判斷是否為空 | - |
| search(Object o) | 從棧頂(1)向下搜索,返回距離 | - |
import java.util.Stack;
import java.util.Enumeration;
public class StackDemo {
public static void main(String[] args) {
Stack
--- 壓入三個元素 ---
棧內容(底→頂): 11111
棧內容(底→頂): 11111 absdder
棧內容(底→頂): 11111 absdder 29999.3
搜尋位置: absdder=2, 11111=3
--- 彈出所有元素 ---
彈出: 29999.3
棧內容(底→頂): 11111 absdder
彈出: absdder
棧內容(底→頂): 11111
彈出: 11111
棧為空
Deque stack = new ArrayDeque<>();
stack.push("a");
stack.push("b");
String top = stack.pop(); // "b"
String peek = stack.peek(); // "a"
// 更高效、非同步、支援雙端操作
Deque<E> stack = new ArrayDeque<>()。Stack 可保留,但注意其同步開銷與 Vector 繼承關係。search 方法在 Deque 無對應,需自行實現或轉 List 使用 indexOf。