Java中的STL-Stack
public class Stack<E> extends Vector<E>
从Stack的定义来看,它只是在Vector的基础上新增了自己的API,如下。
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);
}
public boolean empty() {
return size() == 0;
}
public synchronized int search(Object o) {
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
Stack利用Vector实现了一个后入先出的数据结构。代码非常简单易懂,因为Vector是线程安全的,所以Stack也是线程安全的。