使用Vector <e>实现堆栈<e>

时间:2015-09-30 07:20:35

标签: java stack pop

我正在以下列方式使用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.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);
    }
}

1 个答案:

答案 0 :(得分:0)

虽然没有真正建议,但还有一种方法是返回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

您可能需要查看Null Object Pattern,其中提供了有关此内容的更多信息。