主要測試了一下“棧“的特點“先進後出”,測試如下:
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());
}
}
畫了兩張圖,來解釋一下:
另外如果,全部出完棧後,如果再次pop的話會抛出“棧空”
java.util.EmptyStackException
at java.util.Stack.peek(Unknown Source)
如有錯誤,還請指正。