Java 实现堆栈<;E>;使用向量<;E>;

Java 实现堆栈<;E>;使用向量<;E>;,java,vector,stack,Java,Vector,Stack,我正在以以下方式使用堆栈。。。我在第26行遇到了问题: import java.util.Vector; public class Stack<E> { private Vector <E> v=new Vector <E>(1); public int getSize() { return v.size(); } public boolean isEmpty() { return (v.is

我正在以以下方式使用堆栈。。。我在第26行遇到了问题:

import java.util.Vector;

public class Stack<E> {
    private Vector <E> v=new Vector <E>(1);
    public int getSize() {
        return v.size();
    }

    public boolean isEmpty() {
        return (v.isEmpty());
    }

    public E getTop() {
        return v.lastElement();
    }

    public E pop() {
        E p;
        if (!isEmpty()) {
            p = v.lastElement();
            v.remove(v.size() - 1);
        }
        /*return p; what to do here?? when stack is empty how to return and what to?* /
    }

    public void push(E p) {
        v.add(p);
    }
}
import java.util.Vector;
公共类堆栈{
私有向量v=新向量(1);
公共int getSize(){
返回v.size();
}
公共布尔值为空(){
返回(v.isEmpty());
}
公共E getTop(){
返回v.lastElement();
}
公共E-pop(){
E-p;
如果(!isEmpty()){
p=v.lastElement();
v、 移除(v.尺寸()-1);
}
/*返回p;在这里做什么??当堆栈为空时,如何返回以及返回什么?*/
}
公共无效推送(EP){
v、 加(p);
}
}

一种方法是返回null,尽管不是真正建议的:

public E pop() {
E p = null;
if (!isEmpty()) {
    p = v.lastElement();
    v.remove(v.size() - 1);
}
return p;
如果您可以为堆栈中要使用的类型提供一个默认构造函数,以便以后可以检查对象是否有效,那就更好了

E p = new E(); // invalid object

您可能想查看提供了更多信息的。

如果不是关于为堆栈使用自己的实现,您可以使用java.util.Stack-如果您想从空堆栈中弹出,此实现将抛出java.util.EmptyStackException。