本章源码基于JDK1.7
java中Stack数据结构是基于Vector实现的,所实现的方法较少,且都是线程安全的。
package java.util;
public class Stack<E> extends Vector<E> {
private static final long serialVersionUID = 1224463164541339165L;
public Stack() {
}
//压栈
public E push(E var1) {
this.addElement(var1);
return var1;
}
//出栈
public synchronized E pop() {
int var2 = this.size();
Object var1 = this.peek();
this.removeElementAt(var2 - 1);
return var1;
}
//查看栈顶元素
public synchronized E peek() {
int var1 = this.size();
if (var1 == 0) {
throw new EmptyStackException();
} else {
return this.elementAt(var1 - 1);
}
}
//通过size判断当前stack是否为空
public boolean empty() {
return this.size() == 0;
}
//查询栈中某个元素所在位置
public synchronized int search(Object var1) {
int var2 = this.lastIndexOf(var1);
return var2 >= 0 ? this.size() - var2 : -1;
}
}