首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Stack 棧結構操作指南:push/pop/peek/search 方法詳解與測試代碼

     編輯:Java 相關知識

前言

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 stack = new Stack<>();
        
        System.out.println("--- 壓入三個元素 ---");
        stack.push(11111);
        printStack(stack);
        stack.push("absdder");
        printStack(stack);
        stack.push(29999.3);
        printStack(stack);
        
        System.out.println("搜尋位置: absdder=" + stack.search("absdder") + ", 11111=" + stack.search(11111));
        
        System.out.println("--- 彈出所有元素 ---");
        while (!stack.empty()) {
            System.out.println("彈出: " + stack.pop());
            printStack(stack);
        }
    }
    
    static void printStack(Stack stack) {
        if (stack.empty()) {
            System.out.println("棧為空");
        } else {
            System.out.print("棧內容(底→頂): ");
            Enumeration e = stack.elements();
            while (e.hasMoreElements()) System.out.print(e.nextElement() + " ");
            System.out.println();
        }
    }
}

輸出結果

--- 壓入三個元素 ---
棧內容(底→頂): 11111 
棧內容(底→頂): 11111 absdder 
棧內容(底→頂): 11111 absdder 29999.3 
搜尋位置: absdder=2, 11111=3
--- 彈出所有元素 ---
彈出: 29999.3
棧內容(底→頂): 11111 absdder 
彈出: absdder
棧內容(底→頂): 11111 
彈出: 11111
棧為空

現代替代:ArrayDeque (推薦)

Deque stack = new ArrayDeque<>();
stack.push("a");
stack.push("b");
String top = stack.pop(); // "b"
String peek = stack.peek(); // "a"
// 更高效、非同步、支援雙端操作

遷移建議

  1. 新代碼統一使用 Deque<E> stack = new ArrayDeque<>()。
  2. 舊代碼 Stack 可保留,但注意其同步開銷與 Vector 繼承關係。
  3. search 方法在 Deque 無對應,需自行實現或轉 List 使用 indexOf。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved