package java.util;
public
class Stack<E> extends Vector<E> {
public Stack() {
}
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 synchronized int search(Object o) {
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
private static final long serialVersionUID = 1224463164541339165L;
}
以上是堆栈的java源代码。 我意识到它只是模拟一个堆栈,而不是一个真正的堆栈。所以我的问题是
答案 0 :(得分:2)
没有&#34;真正的Stack&#34;,堆栈只是一个想法,即所谓的abstract data type。它支持两个操作,push和pop,并且元素的顺序被定义为后进先出(LIFO)。除了java.util.Stack(基于Vector,基于数组),你还有java.util.LinkedList(一个双向链表),它也支持堆栈操作,所以它也是一个堆栈和另一个一样多。还有其他一些实现,例如java.util.Deque的所有实现。
您可以通过多种方式从头开始,每种方式都有自己的权衡。你的问题没有得到足够的定义,无法得到好的答案。