主要测试了一下“栈“的特点“先进后出”,测试如下:
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)
如有错误,还请指正。