简介:
栈是一种先进后出的数据结构。
例如:文本编辑器的撤销功能,最后一次编辑的内容都是最先撤销的,这个功能就是利用栈来实现的。
继承关系如下:
栈的基本操作形式:
在Java程序之中使用stack来描述栈的操作,这个类的定义:
public class Stack<E>
extends Vector<E>
可以发现Stack是Vector的子类,但是Stack使用的并不是Vector之中的方法,而是下面的两个方法:
- 入栈:
public E push(E item) {
addElement(item);
return item;
}
- 出栈:
public synchronized E pop() {
E obj;
int len = size();
obj = peek();
removeElementAt(len - 1);
return obj;
}
初步操作:
import java.util.Stack; public class MAIN { public static void main(String[] args) { Stack<String> sa = new Stack<String>(); sa.push("A"); sa.push("B"); sa.push("C"); sa.push("D"); System.out.println(sa.pop()); // D System.out.println(sa.pop()); // C System.out.println(sa.pop()); // B System.out.println(sa.pop()); // A System.out.println(sa.pop()); // 无数据,报java.util.EmptyStackException异常 } }
输出结果:
此时就可以看出了,所有的数据在保存之后,取出的时候都是按照倒序方式取出,如果栈内没有数据了,就会抛出异常。