前言
- Stack类表示对象的后进先出(LIFO)堆栈。
- 它通过五个操作扩展了Vector类,这些操作允许将vector视为堆栈。
- 提供了通常的 push 和 pop 操作,
- 以及一种 peek 堆栈顶部元素的方法,
- 一种用于测试堆栈是否为空的方法 empty 以及一种用于在堆栈中从顶部开始搜索项目并发现其距离的方法 search。
- stack创建的时候是空的,没有任何元素。
源码
public class Stack<E> extends Vector<E> {
/**
* 创建一个stack
*/
public Stack() {
}
/**
* 入栈 和addElement 方法作用一样。
*/
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;
}
/**
* 查看顶部元素,但是不会移除它。
*/
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
/**
* 判断stack是否为空
*/
public boolean empty() {
return size() == 0;
}
/**
* 返回对象在此堆栈上的从1开始的位置。
* 如果对象o作为该堆栈中的一个项目出现,则此方法返回距堆栈顶部最近的堆栈顶部的距离;
* 堆栈中最顶层的项目被视为距离为1。equals方法用于将o与该堆栈中的项目进行比较。
*/
public synchronized int search(Object o) {
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
/** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = 1224463164541339165L;
}