天天看點

java Stack 類 (棧)

主要測試了一下“棧“的特點“先進後出”,測試如下:

import java.util.Stack;
/**
 * 2016年3月28日20:18:18
 * @author G_F
 * Tip: Stack類的測試
 */
public class StackTest {
    //靜态方法
    public static String getEmpty(Stack<String> stack) {
        //測試堆棧是否為空
        return (stack.empty())?"堆棧是空的" :"堆棧不是空的";
    }
    //程式主入口
    public static void main(String [] args) {

        Stack<String> stack = new Stack<String>();

        /*
        把項壓入前
        輸出結果為:堆棧是空的
        */
        System.out.println("把項壓入前:" + getEmpty(stack)); 
        stack.push("我"); //入棧
        stack.push("的"); //入棧
        stack.push("手"); //入棧
        stack.push("讓"); //入棧
        stack.push("你"); //入棧
        stack.push("牽"); //入棧

        /*
        把項壓入後
        輸出結果為:把項壓入後:堆棧不是空的
        */
        System.out.println("把項壓入後:" + getEmpty(stack)); 

        /*
        輸出堆棧頂部的對象
        輸出結果為:執行pop前的“棧頂”的對象是:牽
        */
        System.out.println("執行pop前的“棧頂”的對象是:" + stack.peek()); 

        /*
        輸出對象在堆棧中的位置
        輸出結果為:對象“手”在執行pop“前”的位置是:4
        */
        System.out.println("對象“手”在執行pop“前”的位置是:" + stack.search("手"));

       /*
        輸出移除的堆棧頂部的對象(出棧)
        輸出結果為:pop掉的對象是:牽
        */
        System.out.println("pop掉的對象是:" + stack.pop()); 

        /*
        輸出對象在堆棧中的位置
        輸出結果為:對象“手”在執行pop“後”的位置是:3
        */
        System.out.println("對象“手”在執行pop“後”的位置是:" + stack.search("手")); //

        /*
        輸出堆棧頂部的對象
        輸出結果為:執行pop後的“棧頂”的對象是:你
        */
        System.out.println("執行pop後的“棧頂”的對象是:" + stack.peek()); 
    }
}
           

畫了兩張圖,來解釋一下:

java Stack 類 (棧)
java Stack 類 (棧)

另外如果,全部出完棧後,如果再次pop的話會抛出“棧空”

java.util.EmptyStackException

at java.util.Stack.peek(Unknown Source)

如有錯誤,還請指正。