天天看点

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)

如有错误,还请指正。