简介:
栈是一种先进后出的数据结构。
例如:文本编辑器的撤销功能,最后一次编辑的内容都是最先撤销的,这个功能就是利用栈来实现的。
继承关系如下:
栈的基本操作形式:
在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异常
}
}
输出结果:
此时就可以看出了,所有的数据在保存之后,取出的时候都是按照倒序方式取出,如果栈内没有数据了,就会抛出异常。