Java 简明教程

Java Stack Class

Introduction

Stack 是 Vector 的一个子类,它实现了一个标准的后进先出栈。

Stack 只定义默认构造函数,它创建一个空栈。Stack 包含由 Vector 定义的所有方法,并添加了几个自己的方法。

Java Stack 类表示一个对象的后进先出 (LIFO) 栈。

  1. 当先创建一个栈时,它不包含任何项。

  2. 在此类中,最后插入的元素最先访问。

Class declaration

以下是 java.util.Stack 类的声明:

public class Stack<E>
   extends Vector<E>

Class constructors

Class methods

Methods inherited

此类从以下类中继承方法:

  1. java.util.Vector

  2. java.util.Collection

  3. java.util.Object

  4. java.util.List

Example

以下程序说明了 Stack 集合支持的若干方法 -

import java.util.*;
public class StackDemo {

   static void showpush(Stack st, int a) {
      st.push(new Integer(a));
      System.out.println("push(" + a + ")");
      System.out.println("stack: " + st);
   }

   static void showpop(Stack st) {
      System.out.print("pop -> ");
      Integer a = (Integer) st.pop();
      System.out.println(a);
      System.out.println("stack: " + st);
   }

   public static void main(String args[]) {
      Stack st = new Stack();
      System.out.println("stack: " + st);
      showpush(st, 42);
      showpush(st, 66);
      showpush(st, 99);
      showpop(st);
      showpop(st);
      showpop(st);
      try {
         showpop(st);
      } catch (EmptyStackException e) {
         System.out.println("empty stack");
      }
   }
}

这会产生以下结果 −

Output

stack: [ ]
push(42)
stack: [42]
push(66)
stack: [42, 66]
push(99)
stack: [42, 66, 99]
pop -> 99
stack: [42, 66]
pop -> 66
stack: [42]
pop -> 42
stack: [ ]
pop -> empty stack